filtering and formatting the output

Hi Team,

I have input file like below.

[SYSTEM.css.interfaces]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_CREATE_SUB_KEY, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en2]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en2.172|d20|d207|d0]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en2.172|d20|d207|d0.1]
ORATEXT : cluster_interconnect
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en5]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en5.172|d20|d210|d0]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en5.172|d20|d210|d0.1]
ORATEXT : cluster_interconnect
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en6]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en6.169|d178|d152|d0]
UNDEF : 
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

[SYSTEM.css.interfaces.global.en6.169|d178|d152|d0.1]
ORATEXT : public
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

I want to do whenever "ORATEXT = public" and "ORATEXT = cluster_interconnect". I have to filter previous line and get the interface name. Below is the output i needed for above current inputfile.

Public -> en6
Cluster_interconnect1 -> en2
Cluster_interconnect2 -> en5

Please advice. Thanks !

Regards
Kamal

Like this?

awk '/^ORATEXT : (cluster_interconnect|public)/{
sub(/([^.]+[.]){4}/,"",p)
sub(/[.].*/,"",p)
print $3,p}{p=$0}' OFS=' -> ' file

BTW, I like the looks of this regexp... :smiley:

1 Like

try this..

awk -F "[. ]" '{if($0 ~/ORATEXT : cluster_interconnect/){a++;print $3a,s}else if($0 ~/ORATEXT : public/){b++;print $3b,s}else{s=$5}}' OFS=" -> " file
1 Like

yet another awk:

awk -F'[ \t\n.]' '/ORATEXT/{print $10 (++c[$10]), $5}' RS= OFS=" -> " file
1 Like

Thanks all for the reply !!!!