Print one's place for 1 to N times, ksh Perl whatever?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Print one's place for 1 to N times, ksh Perl whatever?
# 1  
Old 04-11-2013
Print one's place for 1 to N times, ksh Perl whatever?

Hello all,
I would like to create a for loop or whatever is quick that will print the one’s place of a number for 1-N times
say for example a printed page formatting is 132 characters wide,
I would like a single line

123456789012345678901234567890... ...012

That is 132 characters long. I am putting this in a simple print test program and want the recipient to see at a glance that the printing is not getting truncated for any reason.


I see in a similar thread a slick way to print a single character N times

In these below cases if one * was missing (due to printer/lp miss configuration) in a string of 132 your eye could miss it easily.. TIA. -KJ


nawk 'BEGIN{$1000=OFS="*";print}' < /dev/null
perl -le 'print "*" x 1000'
printf "%01000d"|tr "0" "*"

https://www.unix.com/shell-programmin...cters-ksh.html

Last edited by KmJohnson; 04-11-2013 at 12:24 PM..
# 2  
Old 04-11-2013
Maybe something like this

Code:
$ maxv=80

$ numb=1; while [ $numb -le $maxv ]; do echo $numb | awk '{printf "%1s",substr($numb,length($numb),1)}'; numb=$(($numb+1)) ; done
12345678901234567890123456789012345678901234567890123456789012345678901234567890

$

This User Gave Thanks to joeyg For This Post:
# 3  
Old 04-11-2013
This is a breeze in Perl if you have Tie::Cycle installed. You tie a scalar to this class and provide the list of values to cycle through (1 to 9, 0). Then, whenever you access the scalar, the next element in the list is fetched. It becomes as easy as saying "print 'this' 132 times". 'this' cycles through that list and gets reset automatically.

Without this simple but wonderful module, you may try:
Code:
perl -le '$s="1234567890";print $s x (132/10) . substr($s,0,132%10)'

Just replace 132 with whatever number you need.

Last edited by elixir_sinari; 04-11-2013 at 01:04 PM..
This User Gave Thanks to elixir_sinari For This Post:
# 4  
Old 04-11-2013
Code:
perl -e 'print $_%10 for (1..132)'

where 132 is the length you are testing.
These 2 Users Gave Thanks to durden_tyler For This Post:
# 5  
Old 04-11-2013
Quote:
Originally Posted by durden_tyler
Code:
perl -e 'print $_%10 for (1..132)'

where 132 is the length you are testing.
Sweet...
This User Gave Thanks to elixir_sinari For This Post:
# 6  
Old 04-11-2013
Something similar using awk
Code:
awk 'BEGIN{while(++i<=132)printf i%10}'

--ahamed
This User Gave Thanks to ahamed101 For This Post:
# 7  
Old 04-11-2013
Quote:
Originally Posted by joeyg
Code:
$ maxv=80
 
$ numb=1; while [ $numb -le $maxv ]; do echo $numb | awk '{printf "%1s",substr($numb,length($numb),1)}'; numb=$(($numb+1)) ; done
12345678901234567890123456789012345678901234567890123456789012345678901234567890
 
$

what os is this from? the while loop works perfectly, something in the awk line for me does not... I get this
awk: Field $() is not correct.
The input line number is 1.
The source line number is 1.
awk: Field $() is not correct.
The input line number is 1.
The source line number is 1.

N times. Thank you for your time. -just wondering if my awk has different options. -KJ

---------- Post updated at 04:40 PM ---------- Previous update was at 04:37 PM ----------

Quote:
Originally Posted by elixir_sinari
This is a breeze in Perl if you have Tie::Cycle installed. You tie a scalar to this class and provide the list of values to cycle through (1 to 9, 0). Then, whenever you access the scalar, the next element in the list is fetched. It becomes as easy as saying "print 'this' 132 times". 'this' cycles through that list and gets reset automatically.

Without this simple but wonderful module, you may try:
Code:
perl -le '$s="1234567890";print $s x (132/10) . substr($s,0,132%10)'

Just replace 132 with whatever number you need.

This fully works for me right now. You just made my day... in fact you all have thanks for all the Reponses. I now just need to look up how to pass the 132 as a var and i'm toast with this project. -KJ Smilie I have not written perl since '98 lol

---------- Post updated at 05:05 PM ---------- Previous update was at 04:40 PM ----------

#cat temp
echo "Perl test"
export Width=80
perl -e 'print $_%10 for (1..'$Width')'
echo "\nAwk test"
export Width=132
echo $Width
awk 'BEGIN{while(++i<='$Width')printf i%10}'
#./temp
Perl test
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Awk test
132
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 12345678901234567890123456789012
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk if condition match and fix print decimal place

Hi All, I have problem in the middle of implementing to users, whereby the complaint is all about the decimal place which is too long. I need two decimal places only, but the outcome from command is always fixed to 6. See the sample : before: Sort Total Site Sort SortName Parts ... (3 Replies)
Discussion started by: horsepower
3 Replies

2. Shell Programming and Scripting

Print String N times the number before it

Hey All, I want want to print a string N times the number N before it. Like i have "20 hello". so i want to print hello hello hello . . . . . 20 times.. Please help me.. I am not able o figure out.. how to do the same? (8 Replies)
Discussion started by: jaituteja
8 Replies

3. UNIX for Dummies Questions & Answers

How do I count how many times a specific word appear in a file (ksh)?

Hi Please can you help how do I count the number of specific characters or words that appear in a file? (8 Replies)
Discussion started by: fretagi
8 Replies

4. Shell Programming and Scripting

Print each column 3 times

Hi All, I have a file with more than 2000 columns and I would like to print each column 3 times, so that I will get a file like col1 col1 col1 col2 col2 col2 ........coln coln coln. I have tried the following code: awk '{for(i=1; i<=NF; i++) {s=s FS $i,$i,$i} print s;s=""}' input >... (2 Replies)
Discussion started by: Fredrick
2 Replies

5. Shell Programming and Scripting

Ksh riddle: interpret variable two times?

exam is a ksh script. In command line I enter: exam 3 param_2 param_3 param_4. In exam how can I get the value of the parameter which position is specified by the first argument. Simply doing this DOES NOT work: offset=$1 value=$$offset can you figure out any possible way to interpret a... (5 Replies)
Discussion started by: i27oak
5 Replies

6. Shell Programming and Scripting

How to print first two words two times using SED...

I have string as and I want to print first two words as output. (3 Replies)
Discussion started by: Diggi
3 Replies

7. Shell Programming and Scripting

KSH problem - how do i redirect three times?

i need to output an ls command to a file but also capture any errors from that command and output them to a log file and the screen. if it's only possible to output them to a log file and not the screen then that's fine. this is what i've tried so far, but it won't populate log.txt. i've... (16 Replies)
Discussion started by: mjays
16 Replies

8. Shell Programming and Scripting

display changing variable in one place on screen in ksh

Is it possible using just korn shell script to display a variable on the screen that is constantly changing in on place on the screen, to tell it in coordinates or something? In a loop, echo will print a new line each time, can I make it a static position? Thanks (7 Replies)
Discussion started by: raidzero
7 Replies

9. Shell Programming and Scripting

ksh - truncate a log in place, sed -i not available captain!

Hi there:) Because of security requirements, It would be much better if I could truncate my logs in place using sed -i (or ?). I cant use the -i option on sed in my environment. Can anyone help a DBA? (5 Replies)
Discussion started by: quigley007
5 Replies

10. Shell Programming and Scripting

AWK print a character many times

How can I print a '-' on the same line within awk, say 50 times, without actually typing '-' 50 times? Cheers (3 Replies)
Discussion started by: dbrundrett
3 Replies
Login or Register to Ask a Question