Shell Printf command , a little more dynamic..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell Printf command , a little more dynamic..
# 1  
Old 02-04-2013
Shell Printf command , a little more dynamic..

A big hello to everyone tagged to this site of knowledge . This is the first post of mine and I am looking forward to an enjoyable stint in this forum where I get to know a lot of new ideas and share whatever knowledge (its not much though Smilie ) I have acquired throughout my career so far with y'all.

To start of , I am , in a sort of stuck in a strange situation.
The requirement is to format a string to a precision , which is will be dynamic .

Lets say the string's 976461 , and we have to format it to a precision of 10 , and LEFT PAD it with zero's. So the output would be 0000976461 .

What I did is to store the precision in a Shell variable (say a ) using the following code :
Code:
a=10

and the string in another Shell variable b using :
Code:
b=976461

and use the printf command to format the string to the precision stored in variable a , and finally write the output to variable c using
Code:
c=` printf "%0'$a'd" $b`

Now , when I echo the value of c, it showing 000976,461.

Can anyone help me with this ?

Thanks
Kumarjit.

Last edited by Scrutinizer; 02-04-2013 at 05:02 AM.. Reason: code tags
# 2  
Old 02-04-2013
Is this exactly how you wrote it? My shell gives an error due to the quoting. Which shell are you using? This works in dash, a mostly posix sh:

Code:
$ a=10 b=976461
$ c=$(printf "%0${a}d" "$b")
$ echo "$c"
0000976461

# 3  
Old 02-04-2013
Or:
Code:
c=$(printf "%0*d" "$a" "$b")

This User Gave Thanks to Scrutinizer For This Post:
# 4  
Old 02-04-2013
Thanks a ton to you both ( neutronscott and Scrutinizer ), you guys got crazy skills .....

BTW, I am using Korn Shell.

To be very honest , I havent been into Shell scripting for a long period of time, but am keen to know how each of yours codes work .

@neutronscott----firstly what does ${a} in the expression "%0${a}d" stand for , and how different is it from using a blatant "%0$ad" or something like "%0'$a'd"
What I meant to ask is the significance of the {} while invoking a shell variable ?

@Scrutinizer---- I have to admit I dont even have any questions to ask BECAUSE I COULDNT MAKE THE HEADS OR TAILS OF WHAT YOU WROTE, but it works magic .
Could you please explain what your code does and the significance of "*" in the printf command ?

Thank you guys,
Kumarjit.
# 5  
Old 02-04-2013
Hi Kumar, from man printf:

Quote:
A field width or precision may be `*' instead of a digit string. In this case an argument supplies the field width or precision.
So

Code:
printf "%0*d" 10 "$b"

works like
Code:
printf "%010d" "$b"

This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Problem running plsql using printf command on bash shell

I am running plsql using printf on a shell, but i am getting some strange error, can someone point what exactly am i missing, $ echo $SHELL /bin/bash $ printf " > SET serveroutput ON trimspool on feed off echo off > declare > p_val number; > d_val varchar2(10); > begin > SELECT... (1 Reply)
Discussion started by: kamauv234
1 Replies

2. Shell Programming and Scripting

Need help in printf in shell script

My requirement is need to add spaces to the string with the dynamic value to printf... this is a part of shell script ..which i have , the length is not static ... length=15 value="1234567890" printf "%-"$length"s\n" "$value"; The result it is printing is ... i am not sure y it is... (19 Replies)
Discussion started by: greenworld123
19 Replies

3. Shell Programming and Scripting

Help with printf in shell scripting

Hi all I am using printf in my shell script to format my output.I am using the following code. printf "|\tIP Address\t|\tModel Number\t|\tDOM/HW\t|\tSoftware Version\t|\n" printf "|\t%s\t|\t%s\t\t|\t%s\t|\t%s-%s\t\n" $encoder $modelno $type $sv1 $sv2 printf "|\tFPGA... (2 Replies)
Discussion started by: ramman
2 Replies

4. Shell Programming and Scripting

help with printf command

hello, I'm trying to display Unix variable using printf command. Code: awk '{ if ( $0 ~ /string/ ) { printf( "%s\n%s\n",$0,"dsd"); #this one works printf( "%s\n%s\n",$0,$HOME); #this does not work } else { print $0; } }' param1_1.txt I could use here echo command but I'm... (2 Replies)
Discussion started by: bipbip
2 Replies

5. Shell Programming and Scripting

Printf command

Hi, I a sequance number from 1-999 and i want asing the value like 001,002..999 Exp: file_001 file_002 file_003... file_999 How can i disaplay the sequnace number as mention above. (3 Replies)
Discussion started by: koti_rama
3 Replies

6. Shell Programming and Scripting

Shell script dynamic command

I need to run a shell script with dynamic command in it like # Begin script... mysql xx "select * from tab" | sed 's/\t/|/g' > GENERATED_20100304.txt the dynamic part is 20100304 which should be today's date, and it needs to run every day and create a new file with... (2 Replies)
Discussion started by: nuthalapati
2 Replies

7. Shell Programming and Scripting

passing a list of dynamic names to a "PS" command in shell script?

Hi, I am new to shell script. This is my first post .I have written a small script which returns list of names starts with "ram" in /etc/passwd .Here is that:- #!/bin/ksh NAME_LIST="name_list.txt" cat /dev/null > $NAME_LIST evalcmd="cat /etc/passwd | grep "^ram?*" | cut -d: -f1" eval... (3 Replies)
Discussion started by: sachin.tendulka
3 Replies

8. Shell Programming and Scripting

the printf command

hello, Im at another part of the program i am writing. Where i think i'm going to need to use the printf command. If anyone can help me figure out the printf layout i would greatly appreicate it. thanks (4 Replies)
Discussion started by: bebop1111116
4 Replies

9. Shell Programming and Scripting

need help with printf command

Hi How could I use the command printf to display a big file. So ex. I've a script with some variables like: V1=358504 V2=FD0147 V3=dev5 V4=94577 V5=0 V6=UNIX V7=Policy V8=server V9=04/15/05 V10=19:18:41 V11=2341321467 while read V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 do printf "\n%s %s %s... (1 Reply)
Discussion started by: nymus7
1 Replies

10. Shell Programming and Scripting

printf command

I want to make a logfile with error messages, like this: (collumms: CUSTNR DATE TIME ERROR MESSAGE) 102 20020807 135417 1 Uptime server is more than 6 months 5 20020808 111335 3 Backup not Ok! 2001 20020808 120428 6 Free space at server1 is less than 20% etcetera I... (2 Replies)
Discussion started by: FIRE
2 Replies
Login or Register to Ask a Question