当 grep 文件时,grep 返回 true 而不是行,为什么?

Dan*_*SFT 2 grep

我正在一个大约 13G 的文件上运行 grep。它正在返回

Binary file file.xml matches
Run Code Online (Sandbox Code Playgroud)

我没想到这一点,我认为它会用我的字符串返回每一行,以便我可以运行以下命令,

grep "searchString" ./file.xml | wc -l 
Run Code Online (Sandbox Code Playgroud)

并返回我的大文件中搜索字符串的所有出现次数。

use*_*ser 13

看起来 grep 认为您的 XML 文件是二进制文件而不是文本文件。

如果您想强制 grep 将您的文件视为文本而不考虑内容,您可以使用它的--text开关(假设为 GNU grep),如下所示:

grep --text "searchString" ./file.xml | wc -l
Run Code Online (Sandbox Code Playgroud)

请注意,如果您只想计算匹配项,最好使用grep --count而不是通过管道wc -l,从而节省管道和进程调用。