Sponsored Content
Top Forums Shell Programming and Scripting AWK Merge Fields for Print Output Post 302141768 by RacerX on Monday 22nd of October 2007 08:31:09 AM
Old 10-22-2007
For my next attempt at this problem i tried:
Code:
#TERMINAL CMD: awk -f ~/Desktop/blockoutput.awk ~/Desktop/data_file.txt
#TEST TO MERGE OUTPUT OF SPECIFIC FIELDS
#$7/$28, $8/$29, $9/$30, $10/$31, $11/$32

BEGIN {FS=":"}

{ printf("%-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s:", $1, $2, $24, $23, $25, $17, $26, $4, $27, $5, $6)
col7=$7
col28=$28
if( col28 !="            ")
     printf("%-s/%-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s\n", col7,col28, $33, $12, $13, $21, $14, $3, $34, $19, $22, $18, $20, $15, $16)
 else 
     printf("%-s%-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s: %-s\n", col7,col28, $33, $12, $13, $21, $14, $3, $34, $19, $22, $18, $20, $15, $16) }

Which Returns:
Code:
SEP 19-98: SSSSS: FT:       $1,550   : NW1LC: LAPS  : 0283: 5555: 1284: 2222: 9    :4                :     : 2000:    375:    : FAKETF :        $650: AAAA:   76 :   1:   2 :    :    
SEP 26-98: TTTTT: FT:       $2,620   : NW1LC: LAPS  : 0300: 1111: 1330: 3333: 9    :6                :     : 1000:    380:    : ROTHE  :            : BBBB:   86 :   3:   6 :    :    
SEP 28-98: UUUUU: FT:       $2,600   : FNWTC: LAPS  : 0284: 7777: 1293: 6666: 7    :4                :     : 2000:   4080:    : ROTHE  :            : CCCC:   56 :   4:   0 :    :    
OCT 12-98: VVVVV: FX:       $6,600   : CCQ3Y: LAPS  : 0282: 4444: 1301: 0000: 5    :5                :     : 3000:   2490:    : ROTHE  :      $3,000: DDDD:   50 :   6:   5 :    :    
OCT 19-98: WWWWW: FT:       $6,500   : CCQ3Y: LAPS  : 0273: 0101: 1293: 1010: 7    :7                : 3333: 5000:    800:    : ROTHE  :      $3,000: EEEE:   59 :  10:   1 :    :    
OCT 26-98: XXXXX: FT:       $6,250   : CCQ3Y: LAPS  : 0291: 0011: 1294: 0010: 2    :5                :     : 2000:    360:    : ROTHE  :        $300: FFFF:   41 :   5:   3 :    :    
JAN  6-98: YYYYY: ZZ:       $3,120   : CHGNW: LAPS  : 0292: 8888: 1313: 3333: 2    :4    /       5    : 9999: 1000:    130:    : VIKING :      $1,500: GGGG:   25 :   2:   9 :    :

EXPECTED OUTPUT:
Code:
---$1----:--$2-:24:-------$23-----:--$25:-$17--:-$26:-$4-:-$27:-$5-:--$6-:-$7/$28:---$8/$29---:--$9/$30-:$10/$31:$11/$32:-$33:-$12:-$13--:$21:--$14--:----$3--:-$34:-$19-:$22:-$18:$20:$15:$16
		
SEP 19-98:SSSSS:FT:      $1,550   :NW1LC:LAPS  :0283:5555:1284:2222:9    :4      :4           :2        :2/3    :2/3    :    :2000:   375:   :FAKETF :    $650:AAAA:  76 :  1:  2 :   :   :   
SEP 26-98:TTTTT:FT:      $2,620   :NW1LC:LAPS  :0300:1111:1330:3333:9    :6      :6           :6        :7/9Z   :6/7    :    :1000:   380:   :ROTHE  :        :BBBB:  86 :  3:  6 :   :   :   
SEP 28-98:UUUUU:FT:      $2,600   :FNWTC:LAPS  :0284:7777:1293:6666:7    :4      :3           :4        :5/4    :9/5H   :    :2000:  4080:   :ROTHE  :        :CCCC:  56 :  4:  0 :   :   :   
OCT 12-98:VVVVV:FX:      $6,600   :CCQ3Y:LAPS  :0282:4444:1301:0000:5    :5      :5           :4        :4/3H   :1/H    :    :3000:  2490:   :ROTHE  :  $3,000:DDDD:  50 :  6:  5 :   :   :   
OCT 19-98:WWWWW:FT:      $6,500   :CCQ3Y:LAPS  :0273:0101:1293:1010:7    :7      :4           :1        :3/2    :1/XX   :3333:5000:   800:   :ROTHE  :  $3,000:EEEE:  59 : 10:  1 :   :   :   
OCT 26-98:XXXXX:FT:      $6,250   :CCQ3Y:LAPS  :0291:0011:1294:0010:2    :5      :5           :3        :3/5H   :5/7T   :    :2000:   360:   :ROTHE  :    $300:FFFF:  41 :  5:  3 :   :   :   
JAN  6-98:YYYYY:ZZ:      $3,120   :CHGNW:LAPS  :0292:8888:1313:3333:2    :4/5    :4/7         :2/H      :1/1H   :1/T    :9999:1000:   130:   :VIKING :        :GGGG:  25 :  2:  9 :   :   :

My code only merges the first field set $7/$28 right now. Do i have to continue doing If-Else statements to merge the next set of fields i want to merge for output like: $8/$29 $9/$30 $10/$31 $11/$32?

Is there a better way to do what i am trying to do?
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Awk: How to merge duplicate lines and print in a single

The input file: >cat module1 200611051053 95 200523457498 35 200617890187 57 200726098123 66 200645676712 71 200744556590 68 >cat module2 200645676712 ... (10 Replies)
Discussion started by: winter9
10 Replies

2. Shell Programming and Scripting

awk /nawk :: print the everything except the first and the last fields

format of file1 "file1.txt" 1 2 3 4 A B C XX YY ZZ AA WWW The output must contain except the first and last column the output must be 2 3 B YY ZZ AA (8 Replies)
Discussion started by: centurion_13
8 Replies

3. Shell Programming and Scripting

AWK: merge two files and replace some fields

Need some code tweak: awk 'END { for (i=1; i<=n; i++) if (f2]) print f2] } NR == FNR { f2 = $1] = $0 next } $1 in f2 { delete f2 }1' FS=, OFS=, 2.csv 1.csv > 3.csvfile 1.csv have: $1,$2,$3,$4,$5,$6,$7,$8,$9...... file 2.csv have: $1,$2,$3,$4,$5,$6 (2 Replies)
Discussion started by: u10
2 Replies

4. Shell Programming and Scripting

Print all the fields of record using awk

Hi, i want to generate print statement using awk. i have 20+ and 30+ fields in each line Now its priting only first eight fields print statement as output not all. my record is as shown below filename ... (2 Replies)
Discussion started by: raghavendra.nsn
2 Replies

5. Shell Programming and Scripting

awk - print all fields except for last field

How do I print all the fields of a record except for the $(NF) field? (4 Replies)
Discussion started by: locoroco
4 Replies

6. Shell Programming and Scripting

How to print 1st field and last 2 fields together and the rest of the fields after it using awk?

Hi experts, I need to print the first field first then last two fields should come next and then i need to print rest of the fields. Input : a1,abc,jsd,fhf,fkk,b1,b2 a2,acb,dfg,ghj,b3,c4 a3,djf,wdjg,fkg,dff,ggk,d4,d5 Expected output: a1,b1,b2,abc,jsd,fhf,fkk... (6 Replies)
Discussion started by: 100bees
6 Replies

7. Shell Programming and Scripting

How to merge fields in a single file using awk ?

Hi, From a file, using: awk -F" " '{ if (NF == 6) print $1, $2, $3, $4, $5, $6; if (NF == 5) print $1, $2, $3, $4, $5; }' i printed out the required output. But i'm trying to merge the columns. Please look at the desired output. Any suggestions? Thanks Output: 00015 PSA1 ... (5 Replies)
Discussion started by: web2moha
5 Replies

8. Shell Programming and Scripting

awk sort based on difference of fields and print all fields

Hi I have a file as below <field1> <field2> <field3> ... <field_num1> <field_num2> Trying to sort based on difference of <field_num1> and <field_num2> in desceding order and print all fields. I tried this and it doesn't sort on the difference field .. Appreciate your help. cat... (9 Replies)
Discussion started by: newstart
9 Replies

9. UNIX for Dummies Questions & Answers

Merge two text files by two fields and mixed output

Hello, I'm back again looking for your precious help- This time I need to merge two text files with matching two fields, output only common records with mixed output. Let's look at the example: FILE1 56153;AAA0708;3;TEST1TEST1; 89014;BBB0708;3;TEST2TEST2; 89014;BBB0708;4;TEST3TEST3; ... (7 Replies)
Discussion started by: emare
7 Replies

10. Shell Programming and Scripting

awk print even fields of file

Hello: I want to print out the even number of fields plus the first column as row identifiers. input.txt ID X1 ID X2 ID X3 ID X4 A 700 A 1200 A 400 A 1300 B 2000 B 1000 B 2000 B 600 C 1400 C 200 C 1000 C 1200 D 1300 D 500 D 600 D 200and the output is: output.txt ID X1 X2 X3... (3 Replies)
Discussion started by: yifangt
3 Replies
All times are GMT -4. The time now is 11:51 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy