
파일이 있습니다:
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
)하면 두 경우 모두 마지막 줄과 명시적으로 일치하므로 문제/기능이 트리거되지 않습니다.