パターンマッチング後の行数に基づいて 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プログラムはステートマシンのように動作し、特定のパターンを見るとフラグを設定/設定解除します。