awk - format output


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk - format output
# 1  
Old 02-18-2011
awk - format output

Input file1

Code:
 
zone:  BAU_SERVER1 
                C0:50:76:01:C6:20:00:12; 50:06:01:69:3B:20:14:8B; 
                50:06:01:60:3B:20:14:8B
 zone:  BAU_SERVER2  
                C0:50:76:01:C6:20:00:08; 50:06:01:69:3B:20:14:8B; 
                50:06:01:60:3B:20:14:8B
 zone:  BAU_SERVER3    
                C0:50:76:01:C6:20:00:06; 50:06:01:69:3B:20:14:8B; 
                50:06:01:60:3B:20:14:8B
Effective configuration:
 cfg:   Fabric_A        
 zone:  BAU_SERVER1    
                c0:50:76:01:c6:20:00:12
                50:06:01:69:3b:20:14:8b
                50:06:01:60:3b:20:14:8b
                50:00:09:72:08:2D:95:10
 zone:  BAU_SERVER2    
                c0:50:76:01:c6:20:00:08
                50:06:01:69:3b:20:14:8b
                50:06:01:60:3b:20:14:8b
 zone:  BAU_SERVER3   
                c0:50:76:01:c6:20:00:06
                50:06:01:69:3b:20:14:8b

I have another ALIAS file ( for example called ALIAS1)..with this syntax
Code:
 
50:06:01:60:3b:20:14:8b,host1
50:06:01:69:3b:20:14:8b,host2
50:00:09:72:08:17:8d:40,host3
50:00:09:72:08:2D:95:10,host4
50:06:01:69:3b:20:10:67,host5
...

Required Output ( basically want to read the input below Effective configuration: )
===============
Code:
 
Fabric_A,BAU_SERVER1,c0:50:76:01:c6:20:00:12,host1,host2,host4
Fabric_A,BAU_SERVER2,c0:50:76:01:c6:20:00:08,host1,host2
Fabric_A,BAU_SERVER3,c0:50:76:01:c6:20:00:06,host1

If there is no alias in the ALIAS file ,print the orignal number

Thanks
Mickey
# 2  
Old 02-18-2011
Code:
 awk '
ARGIND==2{a[$1]=$2;next}
/cfg:/{p=$2;print ""}
/zone:/{printf "\n"p"," $2","}
/^  /{printf a[$1]?a[$1]",":$1","}
END{print ""}
' FS=","  alias FS=" " input

# 3  
Old 02-18-2011
I get this as output

Code:
 
,BAU_SERVER1,C0:50:76:01:C6:20:00:12;,50:06:01:60:3B:20:14:8B,
,BAU_SERVER2,C0:50:76:01:C6:20:00:08;,50:06:01:60:3B:20:14:8B,
,BAU_SERVER3,C0:50:76:01:C6:20:00:06;,50:06:01:60:3B:20:14:8B,
Fabric_A,BAU_SERVER1,c0:50:76:01:c6:20:00:12,50:06:01:69:3b:20:14:8b,50:06:01:60:3b:20:14:8b,50:00:09:72:08:2D:95:10,
Fabric_A,BAU_SERVER2,c0:50:76:01:c6:20:00:08,50:06:01:69:3b:20:14:8b,50:06:01:60:3b:20:14:8b,
Fabric_A,BAU_SERVER3,c0:50:76:01:c6:20:00:06,50:06:01:69:3b:20:14:8b,


Thanks for the quick reply

2 issues .... looks like it does not use the ALIAS file .... also i want the data below the line "Effective configuration:" ... looks like its getting the data above that too

---------- Post updated at 02:31 PM ---------- Previous update was at 02:22 PM ----------

My bad ... i left some part of the input file ... its actually like this

Code:
 
cfg:   CNJ_DCX_Fabric_A        
                BAU_SERVER1; BAU_SERVER2; BAU_SERVER3; 
                BAU_SERVER4; BAU_SERVER5; BAU_SERVER6;
 zone:  BAU_SERVER1 
                C0:50:76:01:C6:20:00:12; 50:06:01:69:3B:20:14:8B; 
                50:06:01:60:3B:20:14:8B
 zone:  BAU_SERVER2  
                C0:50:76:01:C6:20:00:08; 50:06:01:69:3B:20:14:8B; 
                50:06:01:60:3B:20:14:8B
 zone:  BAU_SERVER3    
                C0:50:76:01:C6:20:00:06; 50:06:01:69:3B:20:14:8B; 
                50:06:01:60:3B:20:14:8B
Effective configuration:
 cfg:   Fabric_A        
 zone:  BAU_SERVER1    
                c0:50:76:01:c6:20:00:12
                50:06:01:69:3b:20:14:8b
                50:06:01:60:3b:20:14:8b
                50:00:09:72:08:2D:95:10
 zone:  BAU_SERVER2    
                c0:50:76:01:c6:20:00:08
                50:06:01:69:3b:20:14:8b
                50:06:01:60:3b:20:14:8b
 zone:  BAU_SERVER3   
                c0:50:76:01:c6:20:00:06
                50:06:01:69:3b:20:14:8b


i want all the data .. below the "effective configuration" line

Thanks again
# 4  
Old 02-18-2011
Code:
 awk 'ARGIND==2 {a[$1]=$2;next}
/Effective configuration:/{x=1}
x==1&&/cfg:/{p=$2;print ""}
x==1&&/zone:/{printf "\n"p"," $2","}
x==1&&/^  /{printf a[$1]?a[$1]",":$1","}
END{print ""}' FS=","  alias FS=" " input
 
Fabric_A,BAU_SERVER1,c0:50:76:01:c6:20:00:12,host2,host1,host4,
Fabric_A,BAU_SERVER2,c0:50:76:01:c6:20:00:08,host2,host1,
Fabric_A,BAU_SERVER3,c0:50:76:01:c6:20:00:06,host2,

# 5  
Old 02-18-2011
just be aware that the 'ARGIND' is a GNU-specific extension not available in other awk-s.

A better 'paradigm' is:
Code:
FNR==NR  {a[$1]=$2;next}

This User Gave Thanks to vgersh99 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

Need to maintain in- and output format with awk

Hi All, I have a data file (myfile.txt) as below: - A H C - A HHH F - AAA HH I The importan point is that the width between the columns are not fixed and the column seperator is space. I wish to change the value of 4th column using awk only when $3 = HH. I can... (4 Replies)
Discussion started by: angshuman
4 Replies

2. Shell Programming and Scripting

Format output using awk

Hello all , need help with this ... Input File DEV % POOL 0CB4 FBA 2211300 81792 4 IE RAID-5(3+1) R5_EFD100_1 - - 1805376 82 IF RAID-1 M2_FC300_1 - ... (4 Replies)
Discussion started by: greycells
4 Replies

3. Shell Programming and Scripting

Format output in AWK command

hi Friends , I have a file as below s.txt 1~2~~4 2~6~~7 3~8~~9 t.txt 1~2~~4 2~5~8~7 3~8~~7 header for both files is common (2 Replies)
Discussion started by: i150371485
2 Replies

4. Shell Programming and Scripting

Using AWK to format output and email

Hello, I'm a bit stumped, for some reason when using AWK 'print' is not printing the entire date/line. awk '{print "Ticket #: " $1} {print "Queue : " $2} {print "Recieved : " $3} {print "AP Date : " $4} {print "Circuit ID : " $5} {print... (4 Replies)
Discussion started by: ArvinSodhi
4 Replies

5. UNIX for Dummies Questions & Answers

after awk-> format output

hi i have a awk command with several querys.... awk 'FS="|""; print $4, $5, $6...etc.... $4 gives me the date 20120304 $5 is timestamp 101023 I want to format these in 2012.03.04 or 2012/03/04 10:10:23 but have no idea, if this is possible with format-parameters in the awk... (2 Replies)
Discussion started by: Jazzmatazz
2 Replies

6. Shell Programming and Scripting

awk to format an output

awk experts, I have in put file with time stamp followed by "," separated data. same patern continues. The output need time stamp in first columns and data total in 2nd columns. Input file T 9:15 d0,1,3,3 d1,2,1,1 d2,3,1,5 e1,1,1,1 T 9:30 d0,1,1,1 d1,2,3,2 d3,1,2,1... (10 Replies)
Discussion started by: arv_cds
10 Replies

7. Shell Programming and Scripting

scripting/awk help : awk sum output is not comming in regular format. Pls advise.

Hi Experts, I am adding a column of numbers with awk , however not getting correct output: # awk '{sum+=$1} END {print sum}' datafile 2.15291e+06 How can I getthe output like : 2152910 Thank you.. # awk '{sum+=$1} END {print sum}' datafile 2.15079e+06 (3 Replies)
Discussion started by: rveri
3 Replies

8. Shell Programming and Scripting

Awk output format help!!! Urgent!!!!

Hello!! I am capturing and counting certain uniq occurance of certain evet from large log files. below is my output I m getting with my script: No of Messages Date Hour 150 Aug15 1 234 Aug15 2 345 Aug15 3 . ... (4 Replies)
Discussion started by: namodi
4 Replies

9. Shell Programming and Scripting

[need help] output format from awk

hi all, i have a problem with my nawk command output below is the description : nawk $12 == "00008001" { cnt++;cs_cd } END {for(cd in cs_cd) print cd, cs_cd } 2007020814.TDR output : 133 123 desire output: 133,123,.... please advices thank you so much (6 Replies)
Discussion started by: bucci
6 Replies

10. Shell Programming and Scripting

Output in a particular format using AWK

Hi All, I am trying to check if if column 5 is greater than 90. If greater it will print the term in column 6, else if all are within limit, then it will output "Size is within limit". I can't seem to do that with the below code. The output should only be 1 statement of "Size is within the... (4 Replies)
Discussion started by: Raynon
4 Replies
Login or Register to Ask a Question