File output formatting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File output formatting
# 1  
Old 02-03-2011
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
Code:
fname 
lname
address
hiredate
dept

fname 
lname
address
hiredate
dept

Desired output
Code:
fname                    fname
lname                     lname
address                  address
hiredate                 hiredate
dept                      dept

The above spacing should be a at least 4 blank spaces.

Last edited by Franklin52; 02-04-2011 at 03:21 AM.. Reason: Please use code tags
# 2  
Old 02-03-2011
Is there a maximum length for any of these fields?

What shell are you using?

This should go in bash or ksh:

Code:
#!/bin/bash
N=0
LOOP=1
WIDTH="%20s"
while [[ "${LOOP}" -ne 0 ]]
do
        for VAR in FNAME LNAME ADDR HIRE DEPT
        do
                read ${VAR}[$N] || LOOP=0
        done

        read BLANK
        ((N++))
done < datafile

(       printf "${WIDTH}" "${FNAME[@]}"     ;       echo
        printf "${WIDTH}" "${LNAME[@]}"     ;       echo
        printf "${WIDTH}" "${ADDR[@]}"      ;       echo
        printf "${WIDTH}" "${HIRE[@]}"      ;       echo
        printf "${WIDTH}" "${DEPT[@]}"      ;       echo ) > outfile

It produces output like
Code:
               fname              fname2              fname3
               lname              lname2              lname3
             address            address2            address3
            hiredate           hiredate2           hiredate3
                dept               dept2               dept3

Adjust WIDTH to taste. %20s means "print as string, padded with leading spaces to make it exactly 20 long".

This will work with 70 records but won't with thousands or millions.

Last edited by Corona688; 02-03-2011 at 01:36 PM..
# 3  
Old 02-03-2011
Code:
$ awk 'BEGIN{RS="";FS="\n";}{for(i=1;i<=NF;i++){a[i]=a[i]" "$i;c++ }}END{for(i=1;i<=c;i++)print a[i]}' file

# 4  
Old 02-03-2011
Code:
awk '{a[NR%6]=a[NR%6]?a[NR%6] FS $1:$1}END {for (i=1;i<6;i++) print a[i]}' infile

# 5  
Old 02-04-2011
Code:
awk -v x=1 'NF>0{a[x]=a[x]"     "$0;x++;}NF==0{x=1;}END{for(i=1;i<=5;i++) print a[i]}' urfile

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

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: 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: Name Gender Age... (6 Replies)
Discussion started by: andylbh
6 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