AWKを使用して表形式データの形式を再指定するには?

AWKを使用して表形式データの形式を再指定するには?

次の出力を含むファイルがあります。

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最初のフィールドを宣言し、$44番目のフィールドを宣言します。

おすすめ記事