인용하다AU의 Q&A.
grep
매개변수를 사용한 GNU의 동작이 변경되고 행 앵커의 시작 및 끝을 -Pz
지원하지 않는 이유는 무엇입니까?^
$
이것은 실수인가 아니면 올바른 행동인가?
Ubuntu 16.04에서 테스트되었으며 커널 버전은 4.4.0-21-generic입니다.
$ echo ^ | grep -Pz ^
grep: unescaped ^ or $ not supported with -Pz
답변1
이는 GNU grep 버전 2.24(2016년 3월 10일 출시) 이상에서 예상되는 동작이며 GNU grep 2.5에 도입된 버그에 대한 수정 사항입니다.
if (*p == '$' || (*p == '^' && !after_unescaped_left_bracket))
die (EXIT_TROUBLE, 0,
_("unescaped ^ or $ not supported with -Pz"));
2016년 2월 21일에 변경되었습니다.이 버그 보고서이 변경 사항에 대한 자세한 내용은 다음과 같습니다.
GNU grep 옵션이지만 GNU grep 때문에 버그입니다.PCRE_MULTILINE
PCRE 정규식을 컴파일하려면 set을 사용하세요., 그리고또한 여러 레코드를 한 번에 처리하기 위해 pcre_exec 호출로 되돌아갔습니다., 이것이 문제의 근원입니다.지적한대로통과스티븐 차제라스