如何从grep删除行数限制

休伯特·NNN

我发现grep对处理的行数有一些内部限制。
有没有办法消除此限制?

$ cat debug-2020-09-14.log | wc -l
5255625
$ cat debug-2020-09-14.log | grep -v "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" | wc -l
3239948
$ cat debug-2020-09-14.log | grep "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" | wc -l
0
索科维

我怀疑您的日志文件中有二进制数据。一旦grep匹配其中包含二进制数据的行,就grep打印Binary file (standard input) matches(输出到stdout,而不是stderr!)并退出。二进制部分之后的所有匹配项都将被忽略。

为了证实这一理论运行

grep . debug-2020-09-14.log | grep -x 'Binary file .* matches'

如果确实是问题所在,则可以使用grep-a选项进行修复在这里,我们还更换catwc -l通过grep的能力。

grep -ac aaaa debug-2020-09-14.log

来自man grep

-a--text
像对待文本一样处理二进制文件;这等效于该--binary-files=text选项。

--binary-files=TYPE
如果文件的数据或元数据表明该文件包含二进制数据,则假定该文件的类型为TYPE在发现空输入二进制数据后,grep抑制输出。当某些输出被抑制时,grep在任何输出之后都带有一条单行消息,表明二进制文件匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章