问题描述
我想使用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