Formatting Output from a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Formatting Output from a file
# 1  
Old 01-09-2011
Formatting Output from a file

Hi guys.
I'm new to Bash Programming.
I've a little problem here.

I have a text file, lets say data.txt, with the data:
Code:
John Tan:Male:20:Singapore
Mary:Female:23:Malaysia
Abdul Rahman Bin Ali:Male:30:India

(: is the delimiter)

I want to display it like this:
Code:
Name Gender Age Country
John Tan Male 20 Singapore
Mary Female 23 Malaysia
Abdul Rahman Bin Ali Male 30 India

I tried using cat data.txt | tr ":" "\t" , but the problem with that is when the name is too long, the formatting will be messed up. (like above)
How can I display the output nicely formatted, like as if they are in a table?
Can I do this using sed command?
Thanks in advance!

Last edited by Franklin52; 01-10-2011 at 10:27 AM.. Reason: Please use code tags
# 2  
Old 01-09-2011
Try printf:
Code:
awk -F: '{printf "%-25s %-6s %3d %s\n",$1,$2,$3,$4}' infile

Code:
while IFS=: read name age gender country
do
  printf "%-25s %-6s %3d %s\n" "$name" "$age" "$gender" "$country"
done < infile

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 01-09-2011
Quote:
Originally Posted by Scrutinizer
Try printf:
Code:
awk -F: '{printf "%-25s %-6s %3d %s\n",$1,$2,$3,$4}' infile

Code:
while IFS=: read name age gender country
do
  printf "%-25s %-6s %3d %s\n" "$name" "$age" "$gender" "$country"
done < infile


hey thanks alot for your help!! I've been struggling with this the whole day and can't get it out. Really appreciate your help.
It appears the way I wanted it to.

I have another question:
What if I have this data in my text file:
(like wise, : as delimiter. Product:Price:QtySold)
Chocolate:2.50:3
How can I display the data called TotalSales? (not in the file, but self declared)
for the chocolate example, expr 2.50 * 3, gives me 7.50
I want to display:

Product UnitPrice QtySold TotalSales
Chocolate 2.50 3 7.50

Once again, thanks for your help.

My codes:
Code:
while IFS=: read product manufacturer price qtyavailable qtysold totalsales
do
totalsales=`expr $price \* $qtysold`
printf "%-40s %-15s %-6s %-6s %-6s %s\n" "$product" "$manufacturer" "$price" "$qtyavailable" "$qtysold" "$totalsales"
done < infile

I got the error: expr: non-numeric argument

Last edited by Franklin52; 01-10-2011 at 10:27 AM.. Reason: Code tags
# 4  
Old 01-09-2011
You're welcome! If you have ksh93 (which is the only shell with floating point arithmetic) use:
Code:
totalsales=$((price * qtysold))

otherwise:
Code:
totalsales=$(echo "$price * $qtysold" | bc)

This User Gave Thanks to Scrutinizer For This Post:
# 5  
Old 01-09-2011
Thanks again!
It appears that the problem is with Floating Point.
I tried changing the text data to numbers without decimal and it works fine.
I'm restricted to using BASH only. Is there a way to do it?
# 6  
Old 01-09-2011
Quote:
Originally Posted by andylbh
Is there a way to do it?
Yes, in the case of bash use the second option...
This User Gave Thanks to Scrutinizer For This Post:
# 7  
Old 01-10-2011
Thanks alot !
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Formatting File Decryption Output

Below is the out put of the decrypt command. Decrypt Command: /usr/bin/gpg --yes --batch --output file.xml --decrypt file.xml.gpg Output: gpg: encrypted with 2048-bit RSA key, ID 96301328, created 2014-04-29 "XYZ <xyz@abc.com>" gpg: encrypted with 2048-bit ELG-E key, ID ECB614CF,... (5 Replies)
Discussion started by: Ariean
5 Replies

2. Shell Programming and Scripting

Help needed in formatting the Output file

Hi All, Need your help in resolving the below issue. I've a file called "data.txt" with the below lines: TT: <tell://me/sreenivas> <tell://me/100> TT: <tell://me/sudheer> <tell://me/300> TT: <tell://me/sreenivas> <tell://me/200> TT: <tell://me/sudheer> <tell://me/400> ... (3 Replies)
Discussion started by: raosr020
3 Replies

3. Shell Programming and Scripting

Formatting the Output

Hi, I am trying to use printf command and format certain output in a specific format as under: While the left side (upto |) of the above format is part of a fixed header function, the right side is where i am expecting data to be printed. However, as seen, Row1 value is reflecting on last... (5 Replies)
Discussion started by: EmbedUX
5 Replies

4. Shell Programming and Scripting

Formatting output

I have the output like below: DEV#: 9 DEVICE NAME: hdisk9 TYPE: 1750500 ALGORITHM: Load Balance SERIAL: 68173531021 ========================================================================== Path# Adapter/Path Name State Mode Select Errors 0 ... (4 Replies)
Discussion started by: Daniel Gate
4 Replies

5. Shell Programming and Scripting

Formatting output

Hi, I have a file like this -------------------------- 1 aaa xxx 55 -------------------------- 1 aaa www 32 -------------------------- 2 bbb yyy 11 -------------------------- 2 bbb zzz 34 ------------------------- 2 bbb ttt ... (3 Replies)
Discussion started by: tdev457
3 Replies

6. Shell Programming and Scripting

Output formatting .

below is a CPU utilization Log for ABC server. However for every 15 minutes it generates 3 CPU values(with interval of 2 sec). Host CPU CPUtotal CPU% time ABC 101.1 2 50.55 14 : 15 ABC 100.5 2 50.25 14 : 15 ABC 100.2 2 50.1 14 : 15 ABC 100.9 2 50.45 14 : 30 ABC 100.5 2 50.25 14 : 30 ABC... (5 Replies)
Discussion started by: pinga123
5 Replies

7. Shell Programming and Scripting

File output formatting

I have a file that list information about users and want to format the output into columns using Shell scripting. There are about 50 to 75 users. Example current file output fname lname address hiredate dept fname lname address hiredate dept Desired output fname ... (4 Replies)
Discussion started by: daveisme
4 Replies

8. Shell Programming and Scripting

formatting output

my script is as follows cnt=`ps -ef |grep pmon|grep -v grep|awk 'END {{print NR}}'` cnt2=`ps -ef |grep tns|grep -v grep|awk 'END {{print NR}}'` if then if then rman target/ catalog recdb/recdb@recdb cmdfile report_need_backup.sql > report_need_backup.txt ... (1 Reply)
Discussion started by: swkambli
1 Replies

9. Shell Programming and Scripting

Need help with formatting an output file

Hi guys, I need help with formatting the output of a file. Below is the script I use to generate a file called output.xls. DAY=`TZ=MYT+16 date '+%b'` DAY1=`TZ=MYT+16 date '+%e'` ls -ltr /bscswork_bi2/WORK/UMOBILE/IR/IN/ALL/PROCESSED | grep "$DAY $DAY1" | awk '{print $9}' | sort | cut -c3-7... (4 Replies)
Discussion started by: kumaran21
4 Replies

10. Shell Programming and Scripting

Formatting Output file

Hi, I have a file.... File1: Num Name ID Place ADDR City Country 1024|Name1|ID1|Street1|ADDR1|Boston|UK 1025|Name2|ID3|Street2|ADDR2|London|USA The above file is varaiable length file. I have to insert 2 values in every record of the above file. Output: ... (3 Replies)
Discussion started by: manneni prakash
3 Replies
Login or Register to Ask a Question