printf problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting printf problem
# 1  
Old 05-20-2010
printf problem

In one of the scripts I am using pintf function as following

Code:
printf "%s%s%s\n" "$f1" "$f2" "$f3"

f3 variable contains a string of 10 characters. However it has value first 7 character and last 3 characters are empty.

Example

Aaaaaaa<3 spaces>
bbbbbbb<3 spaces>
ccccccc<3 spaces>
ddddddd<3 spaces>

After doing the printf and redirecting to some new file only the first 7 characters of f3 variable are written in new file. Due to this my file is becoming unusable. Is there any way in above printf by which I can print all 10 characters.

I tried the following statement-

Code:
printf "%s%s%10s\n" "$f1" "$f2" "$f3"

but it did not worked.
Moderator's Comments:
Mod Comment Use code tags, please

Last edited by pludi; 05-20-2010 at 03:32 AM..
# 2  
Old 05-20-2010
1) Make sure that you really still have 3 spaces at the end, eg by printing the variable surrounded by some delimiter to stderr.
2) If you want to have the string left aligned, use -10 instead of 10:
Code:
$ printf ">>%10s<<\n" "asdf"
>>      asdf<<
$ printf ">>%-10s<<\n" "asdf"
>>asdf      <<

# 3  
Old 05-20-2010
not working :-(

Code:
while read line
do
f1="$(echo "$line" | cut -c1-18)"
f2="$(echo "$line" | cut -c19-27)"
f3="$(echo "$line" | cut -c28-854)"
 
f2=$(echo "$f2"|sed 's/ /0/g')
 
printf "%s%s%s\n" "$f1" "$f2" "$f3"
 
done < cus.data > newfile

This is my code. The last f3 variable has got spaces at the end. The last 3 characters are null.

However the newfile created is not having those spaces at the end and record length is shrinked to 851 characters.

Last edited by pludi; 05-20-2010 at 04:52 AM..
# 4  
Old 05-20-2010
See, that's why I said make sure that f3 has the spaces at the end itself. It doesn't. read will strip away the contents of $IFS from everything it reads before assigning it to the variable. This should work:
Code:
while IFS='' read line
do
f1=$(echo "$line" | cut -c1-18)
f2=$(echo "$line" | cut -c19-27)
f3=$(echo "$line" | cut -c28-854)

f2=$(echo "$f2"|sed 's/ /0/g')

printf "%s%s%s\n" "$f1" "$f2" "$f3"

done < input.txt > output.txt

This User Gave Thanks to pludi For This Post:
# 5  
Old 05-20-2010
Thanks

Quote:
Originally Posted by pludi
See, that's why I said make sure that f3 has the spaces at the end itself. It doesn't. read will strip away the contents of $IFS from everything it reads before assigning it to the variable. This should work:
Code:
while IFS='' read line
do
f1=$(echo "$line" | cut -c1-18)
f2=$(echo "$line" | cut -c19-27)
f3=$(echo "$line" | cut -c28-854)
 
f2=$(echo "$f2"|sed 's/ /0/g')
 
printf "%s%s%s\n" "$f1" "$f2" "$f3"
 
done < input.txt > output.txt

This worked perfectly. Thanks a lot.
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

Problem with printf in UNIX KSH shell

Hi ALL, I am using SunOS 5.9 and KSH(bin/ksh) The problem am facing is error message diaplyed on screen printf: 12099415.79 not completely converted printf: + expected numeric value printf: 11898578.29 not completely converted When i try printing with The output is... (6 Replies)
Discussion started by: selvankj
6 Replies

3. Shell Programming and Scripting

problem with printf in shell script

i have written small script as follows: name="hi hello" printf "%-20s" $name This gives me strange output. -20s format is applied on both word of string. i.e it displays both word hi and hello in space of 20 length. I want to display entire string "hi hello" in length of 20 space. plz... (2 Replies)
Discussion started by: admc123
2 Replies

4. Shell Programming and Scripting

Printf problem

I am having a major problem with printf, The more I pad it, the less I see :( The problem is in the first function, report Am I ruining output somewhere? I wont print out the names propely, it cuts them off or deletes them completely :( #!/bin/bash report() { printf "%-10s" STUD# ... (2 Replies)
Discussion started by: L0ckz0r
2 Replies

5. Shell Programming and Scripting

Awk printf problem

Hi, I've got a basic problem using printf statement in awk. I want to write float values with always 8 characters width. Examples : 1.345678 12.45678 123.4567 1234.678 -23.5678 -2.45678 -23456.8 ..... I cannot find the right printf format %8.1f, %7.5f.... Can anyone help ?... (4 Replies)
Discussion started by: cazhot
4 Replies

6. Shell Programming and Scripting

printf problem

I have the following code: $ awk '{ printf "%-10s %s\n", $1, $2, $3, $4, $5, $5, $6 }' file i can only print the first 2 elements ($1,$2). How can i print all the elements to appear like this: aardvark 5555553 jhfjhfjkg efiigig ejkfjkej wjkdjk alpo-net 5553412 ... (2 Replies)
Discussion started by: DDoS
2 Replies

7. Shell Programming and Scripting

perl: printf indentation problem

hi all, im having a problem with using perl printf. my requirement is to print a string (like ) at the right most end of the screen. i tried this perl script, but it fails with an error; #!/usr/bin/perl use strict; use warnings; my $scrW = 0; my $str = `stty size`; # get the... (5 Replies)
Discussion started by: wolwy_pete
5 Replies

8. UNIX for Dummies Questions & Answers

Problem with "printf"

Hi All, I've one problem with printf. Iam printing some field values from one file "file.txt" using printf, which is resulting anonymously. awk '{ printf (" %-6s\n", substr($0,18,23)) }' file.txt But the same printf is workin fine as per my expectation, if I try as below: ... (1 Reply)
Discussion started by: Lokesha
1 Replies

9. UNIX for Advanced & Expert Users

awk printf problem

Hi Friends, Can anyone guide me how to compute sum of column4 from the below file x using awk command? when i do using awk I'm getting sum 7482350198352648.000000 which is not accurate. $ cat x 56,232,dfgjkhdfj,,56,anand 56,22,dfgjkhdfj,7482347823453123.97834 ,56,Khan 56,23,dfgjkhdfj, ... (6 Replies)
Discussion started by: krishna
6 Replies

10. Programming

disturbing problem with PRINTF() !!

hello everybody, here is my problem: ________________________________________ #include <stdio.h> int main() { int i=10; printf("value is %i",i); return 0; } _________________________________________ when i compile and execute, nothing appears on screen!! but if i replace the printf... (2 Replies)
Discussion started by: brain_processin
2 Replies
Login or Register to Ask a Question