Format output with blocks - awk

Format output with blocks - Awk

 
ZONESET_A,DBP02_HBA0,DC01,20:00:00:25:b5:b9:a0:28,10,port-channel20,01-VB2
ZONESET_A,DBP02_HBA0,DC01,50:00:14:42:a0:72:74:00,10,fc4/30,O1-CORE-D
 
ZONESET_A,dc01vb,DC01,20:00:00:25:b5:b0:a0:13,10,fc1/24,01-VB1
ZONESET_A,dc01vb,DC01,50:00:14:42:a0:72:74:00,10,fc4/30,O1-CORE-D
 
ZONESET_B,DC01,DC01,20:00:00:25:b5:b6:b0:6c,11,port-channel11,NMDNSWACC64
ZONESET_B,DC01,DC01,50:06:01:67:46:e0:56:2e,11,,
ZONESET_B,DC01,DC01,20:00:00:25:b5:b6:b0:9c,11,port-channel11,NMDNSWACC64
 
ZONESET_A,dc01b,DC01,20:00:00:25:b5:b0:a0:13,10,,
ZONESET_A,dc01b,DC01,50:00:14:42:a0:72:74:00,10,,
 
ZONESET_A,dc01s,DC01,20:00:00:25:b5:b0:a0:13,10,,
ZONESET_A,dc01s,DC01,50:00:14:42:a0:72:74:00,10,,
ZONESET_A,dc01s,DC01,20:00:00:25:b5:b0:a0:13,10,,
ZONESET_A,dc01s,DC01,50:00:14:42:a0:72:74:00,10,,
 

Output Needed

 
ZONESET_A,DBP02_HBA0,DC01,20:00:00:25:b5:b9:a0:28,10,port-channel20,01-VB2
,,DC01,50:00:14:42:a0:72:74:00,10,fc4/30,O1-CORE-D
 
ZONESET_A,dc01vb,DC01,20:00:00:25:b5:b0:a0:13,10,fc1/24,01-VB1
,,DC01,50:00:14:42:a0:72:74:00,10,fc4/30,O1-CORE-D

ZONESET_B,DC01,DC01,20:00:00:25:b5:b6:b0:6c,11,port-channel11,NMDNSWACC64
,,DC01,50:06:01:67:46:e0:56:2e,11,,
,,DC01,20:00:00:25:b5:b6:b0:9c,11,port-channel11,NMDNSWACC64
 
ZONESET_A,dc01b,DC01,20:00:00:25:b5:b0:a0:13,10,,
,,DC01,50:00:14:42:a0:72:74:00,10,,
 
ZONESET_A,dc01s,DC01,20:00:00:25:b5:b0:a0:13,10,,
,,DC01,50:00:14:42:a0:72:74:00,10,,
,,DC01,20:00:00:25:b5:b0:a0:13,10,,
,,DC01,50:00:14:42:a0:72:74:00,10,,
  
 
 

where $1,$2 are same within a block replace all the lines except the first one in a block with "" .

Thanks !

try:

awk '!/,/ {a=0} /,/ && a++ {FS=OFS=","; $0=$0; $1=$2=""} 1' infile
1 Like