Grep
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 “將輸入視為一組行,每行都以零字節結尾”,那麼為什麼
'xxx\0yyy'
不產生任何結果呢?
grep
加工線;預設情況下,它們由 分隔\n
,並且該-z
選項告訴grep
它應該\0
用作行分隔符。
-z
描述提供給的數據grep
;它不會改變饋送到的數據grep
。您可以將它與真正\0
用作分隔符的數據一起使用,例如find -print0
.即使您的輸入數據確實包含
\0
,您也無法grep
使用\0
該-z
選項:grep
在行內查找匹配項,因此它無法匹配行分隔符。您的\n
模式有效,因為您的輸入包含它並且grep
沒有\n
用作行分隔符(因為該-z
選項)。