Awk:次の行に基づいて行を変更する

Awk:次の行に基づいて行を変更する

特定のパターンに一致する行を修正するためにawkをどのように使用できますか?ただし、次の行が他のパターンと一致しない場合にのみ適用されますか?

次のスニペットを例に挙げます。

....
pattern1 100 200 300
pattern1 300 400 400
pattern2 300 900 700
pattern1 200 500 900
...

pattern1含まれている行の後に続く2行目を除いて、含まれているすべての行を変更したいと思いますpattern2

これは次のようになります。この問題、しかし正反対です。

ベストアンサー1

次のことを試してください

/pattern2/ { print intact ; print $0 ; next ;}
! /pattern2/  { print new ;}
{ intact=$0 ; $1="p1" ; new=$0 ; }

空の行

明らかにする

p1 100 200 300
pattern1 300 400 400
pattern2 300 900 700
p1 300 400 400

おすすめ記事