如何使用awk解析sun solaris上的测试文件

问题描述

我想使用awk在sun solaris上解析文本文件,并且执行在基因组终端2.6.1上。

在论坛的支持下,我开始了下面的代码

从第一部分开始,然后我们将继续其他部分。

波纹管代码仅打印ADD IP = A | B | C,但带引号(输出文件中的引号是必需的)。

有人可以帮助我吗?

 nawk -v s1="\" ' /^IPDATA/ && /IPID .*/{ if(FNR>1) print s1 "ADD IP" s1 "="s1 $NF OFS s1 }' test 

注意:Ref是IPREF行的总和,在此示例中,我们有三个:[2] && [2] && [1]。

示例文本文件实际上很大,但是我已经总结了它:

IPDATA=A                IPID A            
IPDATA=A                IPREF   [2] =     
--- IPREF = VRID=A_1                      
--- IPREF = VRID=A_2                      
                                          
IPDATA=B                IPID B            
IPDATA=B                IPREF   [2] =     
--- IPREF = VRID=B_1                      
--- IPREF = VRID=B_2                      
                                          
IPDATA=C               IPID C             
IPDATA=C               IPREF    [1] =     
--- IPREF = VRID=C_1 

预期输出

"ADD IP=A "              
show                     
(                        
set "ELEM =1"            
id "A"                   
MT POL                   
M1 no                    
M2  5                    
AD  2                    
Ref sum of IPREF 2       
"Type vlan=VRID=A_1"     
"Type vlan=VRID=A_2"     
)                        
"ADD IP=B "              
show                     
(                        
set "ELEM =1"            
id "B"                   
MT POL                   
M1 no                    
M2  5                    
AD  2                    
 Ref sum of IPREF  2     
"Type vlan=VRID=B_1"     
"Type vlan=VRID=B_2"     
)                        
"ADD IP=C "              
show                     
(                        
set "ELEM =1"            
Id "C"                   
MT POL                   
M1 no                    
M2  5                    
AD  2                    
Ref sum of IPREF  1      
"Type vlan=VRID=C_1"     
) 

谢谢

解决方法

以下代码仅适用于第一部分和第三部分:

  nawk -v s1="\" ' /^IPDATA/ && /IPID .*/{ if(FNR>1){  print ")"  }print "ADD IP="  $NF  ORS "show\n" "(\n" "id="  $NF  "\n" } /^--- IPREF/{ print s1 "Type vlan="$NF s1 }  ' file1

输出列在下面:

ADD IP=A
show
(
id=A

Type vlan=VRID=A_1
Type vlan=VRID=A_2
)
ADD IP=B
show
(
id=B

Type vlan=VRID=B_1
Type vlan=VRID=B_2
)
ADD IP=C
show
(
id=C

Type vlan=VRID=C_1