一致した後にgrep -vを実行して次の行を除外するにはどうすればよいですか?

一致した後にgrep -vを実行して次の行を除外するにはどうすればよいですか?

grep正規表現に一致する各行に2行をフィルタリングする方法は?
私の最小限のテストは次のとおりです。

SomeTestAAAA
EndTest
SomeTestABCD
EndTest
SomeTestDEFG
EndTest
SomeTestAABC
EndTest
SomeTestACDF
EndTest

たとえば、明らかに試してみましたが、うまくいきませgrep -vA 1 SomeTestAAんでした。

希望の出力は次のとおりです。

SomeTestABCD
EndTest
SomeTestDEFG
EndTest
SomeTestACDF
EndTest

ベストアンサー1

(PCRE)grepと組み合わせて使用​​できます。-P

grep -P -A 1 'SomeTest(?!AA)' file.txt

(?!AA)幅がゼロの否定予測モードで、AAその後はないことを保証しますSomeTest

テスト:

$ grep -P -A 1 'SomeTest(?!AA)' file.txt 
SomeTestABCD
EndTest
SomeTestDEFG
EndTest
SomeTestACDF
EndTest

おすすめ記事