次の形式の「input」というテキストファイルを取得しようとしています。
line1
line2
line3
PATTERN
x y z
x y z
lineN
次に、awkを使用して各「xy z」行の後に数字(1)を入れます。出力では、PATTERNの前と「xy z」行(lineN)の後に行が必要です。必要な出力は次のとおりです。
line1
line2
line3
PATTERN
x y z 1
x y z 1
lineN
私が今まで持っているのは次のとおりです。
awk '/PATTERN/ {getline; print $0 " 1" }' < input > output
これは以下を提供します:
x y z 1
awkが「xy z」行を必要な数だけ追加したり、「xy z」タイプの行が完了したら停止するようにループを設定できますか?
ベストアンサー1
ループが役に立つかもしれません:
awk '/PATTERN/{print;getline;while(!/lineN/){$(NF+1)=" 1";print;getline}}1'
または延長@ジェニスのアイデア:
awk '/lineN/{f=0}f{$(NF+1)=" 1"}/PATTERN/{f=1}1'