grep -z: \0이 결과를 생성하지 않는 이유는 무엇입니까?

grep -z: \0이 결과를 생성하지 않는 이유는 무엇입니까?

상상하다:

$ cat t0.txt
xxx
yyy

$ man grep | grep '\-\-null\-data' -A1
       -z, --null-data
              Treat the input as a set of lines, each terminated by a zero byte (the ASCII NUL character) instead of a newline.

$ grep -Pzo 'xxx\0yyy' t0.txt
<nothing>

$ grep -Pzo 'xxx\nyyy' t0.txt
xxx
yyy

따라서 grep이 "입력을 각각 0바이트로 끝나는 일련의 행으로 처리"한다면 왜 'xxx\0yyy'결과가 생성되지 않습니까?

답변1

grep처리 라인은 기본적으로 로 구분되며 \n-z옵션은 라인 구분 기호 grep로 사용되어야 함을 나타냅니다.\0

-z 설명하다제공되는 데이터는 grep입력되는 데이터를 변경하지 않습니다 grep. \0실제로 구분 기호 역할을 하는 데이터와 함께 사용할 수 있습니다 .예를 들어출력 find -print0.

입력 데이터에 가 포함되어 있어도 다음 옵션을 사용할 \0수 없습니다 . 행 내에서 일치 항목을 찾으면 행 구분 기호와 일치하지 않습니다. 귀하의 패턴이 작동하는 이유는 귀하의 입력에 다음이 포함되어 있기 때문입니다.grep\0-zgrep\n그리고 grep이 옵션 \n으로 인해 줄 구분 기호로 사용되지 않습니다 .-z

관련 정보