# Nexae Linux servers
##
subparent Nexas Nexae_NIX Linux
title Nexae Linux servers
group-eorted NFe zluetere
10.48.37.67 zintxzpanae01 # teetip NOzOLUMNe:info,trende
10.59.31.67 etrtxzpanae01 # teetip NOzOLUMNe:info,trende
group-sorted ZBTS
10.48.37.11 zinpl001z3a01 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.12 zinpl001z3a02 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.13 zinpl001z3a03 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.14 zinpl001z3a04 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.41 zinpl001z3b01 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.42 zinpl001z3b02 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.31 zinvl201a3001 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.32 zinvl201a3002 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.33 zinvl201a3003 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.150 zinvl201a3004 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.151 zinvl201a3005 #"TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.152 zinvl201a3006 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.20 zinvl201a3007 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.39 zinvl201a3008 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.65 zinvl201a3009 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.66 zinvl201a3010 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.70 zinvl201a3011 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.158 zinvl201a3012 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.48.37.34 zinvl201a3013 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
group-sorted NTTA
10.59.31.11 etrpl001z1a01 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.12 etrpl001z1a02 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.13 etrpl001z1a03 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.14 etrpl001z1a04 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.31 etrvl201a1001 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.32 etrvl201a1002 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.33 etrvl201a1003 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.150 etrvl201a1004 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.151 etrvl201a1005 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.152 etrvl201a1006 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.44 etrvl201a1008 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.47 etrvl201a1009 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.39 etrvl201a1010 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.65 etrvl201a1011 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.66 etrvl201a1012 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
10.59.31.70 etrvl201a1013 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
170.252.208.216 etrvl201a1007 # "TRENDe:*,netetat:netetat|netetat1|netetat2|netetat3"
#######################################################
##
以上是文件的示例HO
。我使用下面的代码来匹配文件中的sed
关键字,然后将文件中的所有条目插入到.group-sorted NTTA
ho
t4
ho
sed -i.bak '/^group-sorted NTTA$/!b;N;N;r t4' ho
但是该关键字group-sorted NTTA
在文件中出现了 15 次,因此如果我想在中间关键字之后插入条目。我可以这样做吗sed
?
答案1
要将文件 t4 的内容插入到文件 H0 中n
第 -th 次出现之后的两行,请尝试:^group-sorted NTTA$
awk -v n=2 'FNR==NR{t=t"\n"$0;next} /^group-sorted NTTA$/ && n==++cnt {x=NR+3} NR==x{print substr(t,2)} 1' t4 H0
sed
虽然这个问题无疑有一个解决方案,awk
但这里是一个更自然的选择,因为awk
了解算术。例如,这使得编程在第 次出现其中 是变量awk
后执行某些操作变得更容易。n
n
怎么运行的
-v n=2
这设置了 的值
n
。FNR==NR{t=t"\n"$0;next}
读取第一个文件 时
t4
,会将其内容保存在变量 中t
。/^group-sorted NTTA$/ && n==++cnt {x=NR+3}
读取第二个文件 时
H0
, 出现的次数^group-sorted NTTA$
保存在变量 中cnt
。如果cnt
等于n
,则我们将变量赋给x
当前行号的值,NR
加上 3。NR==x{print substr(t,2)}
当到达行号时
x
,我们打印变量的内容t
。 (该substr
命令删除多余的前导换行符。)1
这是 awk 打印当前行的简写。
例子
考虑这些输入文件:
$ cat H0
blah, blah
group-sorted ZBTS
10.48.37.11 zinpl001z3a01 #"TRENDe
10.48.37.12 zinpl001z3a02 #"TRENDe
group-sorted NTTA
10.59.31.11 etrpl001z1a01 # "TRENDe
10.59.31.12 etrpl001z1a02 # "TRENDe
10.59.31.13 etrpl001z1a03 # "TRENDe
group-sorted NTTA
10.59.31.14 etrpl001z1a04 # "TRENDe
10.59.31.31 etrvl201a1001 # "TRENDe
10.59.31.32 etrvl201a1002 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe
和:
$ cat t4
line 1 of t4
line 2 of t4
我们命令的输出是:
$ awk -v n=2 'FNR==NR{t=t"\n"$0;next} /^group-sorted NTTA$/ && n==++cnt {x=NR+3} NR==x{print substr(t,2)} 1' t4 H0
blah, blah
group-sorted ZBTS
10.48.37.11 zinpl001z3a01 #"TRENDe
10.48.37.12 zinpl001z3a02 #"TRENDe
group-sorted NTTA
10.59.31.11 etrpl001z1a01 # "TRENDe
10.59.31.12 etrpl001z1a02 # "TRENDe
10.59.31.13 etrpl001z1a03 # "TRENDe
group-sorted NTTA
10.59.31.14 etrpl001z1a04 # "TRENDe
line 1 of t4
line 2 of t4
10.59.31.31 etrvl201a1001 # "TRENDe
10.59.31.32 etrvl201a1002 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe
答案2
输入文件1
cat H0
blah, blah
group-sorted ZBTS
10.48.37.11 zinpl001z3a01 #"TRENDe
10.48.37.12 zinpl001z3a02 #"TRENDe
group-sorted NTTA
10.59.31.11 etrpl001z1a01 # "TRENDe
10.59.31.12 etrpl001z1a02 # "TRENDe
10.59.31.13 etrpl001z1a03 # "TRENDe
group-sorted NTTA
10.59.31.14 etrpl001z1a04 # "TRENDe
10.59.31.31 etrvl201a1001 # "TRENDe
10.59.31.32 etrvl201a1002 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe
输入文件2
cat t4
10
20
命令
c=`sed -n -e '/group-sorted NTTA/{=;p;}' H0| sed "N;s/\n/ /g" | awk '{print $1}' | sed -n ''$y'p' | awk '{print 2 + $1}'`;sed ''$c'r t4' H0
输出
blah, blah
group-sorted ZBTS
10.48.37.11 zinpl001z3a01 #"TRENDe
10.48.37.12 zinpl001z3a02 #"TRENDe
group-sorted NTTA
10.59.31.11 etrpl001z1a01 # "TRENDe
10.59.31.12 etrpl001z1a02 # "TRENDe
10.59.31.13 etrpl001z1a03 # "TRENDe
group-sorted NTTA
10.59.31.14 etrpl001z1a04 # "TRENDe
10
20
10.59.31.31 etrvl201a1001 # "TRENDe
10.59.31.32 etrvl201a1002 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe