awk - 複数行のコンテキスト以降の変更

awk - 複数行のコンテキスト以降の変更

Line3特定の最初の2行のコンテキスト以降にのみ変更できます。
具体的な文脈は次のとおりです。

Line2
LineEXTRA

ファイルに次のものが含まれています

Line1
Line2
Line3
-----
Line1
Line2
LineEXTRA
Line3
-----
Line1
Line2
Line3

このファイルに

Line1
Line2
Line3
-----
Line1
Line2
LineEXTRA
LineNEW
-----
Line1
Line2
Line3

私たちの試み

awk '/Line2/ { 
   print; getline; if ($0 ~ /Line3/) sub(/3/,"NEW")
}
{ print }' file

結果

Line1
Line2
LineNEW
-----
Line1
Line2
LineEXTRA
Line3
-----
Line1
Line2
LineNEW

それは私たちが望むものではありません。

他の試みはまったく機能しませんでした。

awk '/Line2\nLineEXTRA/ { 
   print; getline; if ($0 ~ /Line3/) sub(/3/,"NEW")
}
{ print }' file

ベストアンサー1

このコードは希望の出力を提供します

awk '/Line2/ { 
   print; getline; if ($0 == "LineEXTRA"){print;getline; sub(/3/,"NEW")}
}
{ print }' file

おすすめ記事