次の出力を含むファイルがあります。
ora.abc.db
1 ONLINE ONLINE serverA Open
2 ONLINE ONLINE serverB Open
ora.xyz.db
1 ONLINE ONLINE serverA Open
2 ONLINE ONLINE serverB Open
2 ONLINE ONLINE serverC Open
このファイルの形式を次のように指定したいのですが、使用したいと思いますshell script
。 awkが使えると思いますが、ロジックはありません。
abc abc1 ONLINE serverA
abc abc2 ONLINE serverB
xyz xyz1 ONLINE serverA
xyz xyz2 ONLINE serverB
xyz xyz3 ONLINE serverC
ベストアンサー1
これは次の方法です。
$ awk '/^ora/ {split($0,a,"."); next} {print a[2], a[2]$1, $2, $4}' a
abc abc1 ONLINE serverA
abc abc2 ONLINE serverB
xyz xyz1 ONLINE serverA
xyz xyz2 ONLINE serverB
xyz xyz2 ONLINE serverC
説明する
/^ora/
で始まる行に適用されますora
。ここでsplit
コンテンツはポイントに基づいており、.
配列に保存されますa
。だからa[1]=ora
、、a[2]=abc
...と次の行にnext
ジャンプします。awk
print
配列の2番目のフィールドa
と行の他の要素を印刷します。$1
最初のフィールドを宣言し、$4
4番目のフィールドを宣言します。