パターンマッチング後のawkの行数に応じて追加

パターンマッチング後のawkの行数に応じて追加

パターンマッチング後の行数に基づいて awk でパターンマッチング後の行を追加する方法。

私が持っているものは次のとおりです。

Stuff
PATTERN
a b c
a b c
a b c
ENDOFSECTION
Morestuff

「ab c」という行の末尾にさまざまな項目を追加したいと思います(abcが正確に何であるかはわかりません。つまり任意です)。

希望の出力:

Stuff
PATTERN
a b c   k
a b c   k
a b c   t
ENDOFSECTION
Morestuff

パターンを識別した後に行数を計算するには、ある種のループが必要だと思います。私の問題は、パターン検索後の行数を変数に関連付ける方法がわからないことです。

これまで私のおおよそのアイデアはうまくいきません。

awk '/PATTERN/ {
i=1
Do
{print $0, "   k"
i++
} while (i<=2)
}

ベストアンサー1

awk '
  BEGIN {split("ABCDEFGH", new, "")}
  /ENDOFSECTION/ {addcol=0}
  addcol {$(++NF) = new[++i]}
  /PATTERN/ {addcol=1; i=0}
  {print}
' file
Stuff
PATTERN
a b c A
a b c B
a b c C
ENDOFSECTION
Morestuff

BEGINブロックは、追加する新しいコンテンツの配列を作成する方法の例です。

その後、awkプログラムはステートマシンのように動作し、特定のパターンを見るとフラグを設定/設定解除します。

おすすめ記事