考虑这个命令:
printf 'alpha\nbravo\ncharlie\n' | grep --line-regexp --quiet bravo
grep看到由换行符分隔的3行,并匹配bravo行。现在考虑 这个命令:
printf 'alpha\0bravo\0charlie\0' | grep --line-regexp --quiet bravo
我的想法告诉我,因为我没有使用--null-data
,grep应该看到
由换行符分隔的1行甚至0行,无法与后跟bravo
匹配
新队。但它没有,它就像第一个命令一样成功,为什么呢
此?
答案 0 :(得分:2)
此行为was introduced与Grep 2.21:
当搜索二进制数据时,grep现在可以将非文本字节视为行 终止。这可以显着提升性能。
所以现在发生的是二进制数据,所有非文本字节 (包括换行符)被视为行终止符。如果你想改变它 行为,你可以:
使用--text
。这将确保只有换行符是行终止符
使用--null-data
。这将确保只有空字节是行终止符