ファイルがあります:
This error
-this
-this
-that
[text I want]
This error
-asd
-asfag
-adsfhs
[text I want]
[text I want]
This error
-asdgsda
-asdgg
-gasdg
除いて一致させたいですThis error and next three lines
。以下を使用できます。
pcregrep -vM 'This error\n.*\n.*\n' file
出力は次のとおりです。
[text I want]
[text I want]
[text I want]
ただし、同じコマンドを使用して(削除して)一致させるには、削除するのではなくv
次のようにします。
pcregrep -M 'This error\n.*\n.*\n' file
出力は次のとおりです。
This error
-this
-this
This error
-asd
-asfag
This error
-asdgsda
-asdgg
pcregrep
それでは、実際の効果は何ですか?
答え1
.*
正規表現の末尾に追加されます。
pcregrep -M 'This error\n.*\n.*\n.*' file
pcregrep -vM 'This error\n.*\n.*\n.*' file
バグのせいかはわかりませんが-v
最後の試合以降ライン全体を除外するようですが\n
、-v
それなしではそうではありません。したがって、追加.*
(つまり、regexで終わらない\n
)は、どちらの場合も最後の行と明示的に一致するため、問題/機能はトリガされません。