# 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 の内容をn
-th の 2 行後にファイル H0 に挿入するには、次のようにします。^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}
2番目のファイルを読み込むと、
H0
発生回数が^group-sorted NTTA$
変数に保存されますcnt
。等しい場合は、変数にcnt
現在の行番号に3を加えた値を割り当てます。n
x
NR
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