如何解决如何从grep删除行数限制
我发现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
的{{1}}选项进行修复。在这里,我们还用-a
的功能替换了cat
和wc -l
。
grep
来自grep -ac aaaa debug-2020-09-14.log
:
man grep
,-a
像对待文本一样处理二进制文件; 这等效于--text
选项。
--binary-files=text
如果文件的数据或元数据指示该文件包含二进制数据,请假定该文件的类型为--binary-files=TYPE
。 在发现空输入二进制数据后,grep抑制输出。如果抑制了某些输出,则grep在任何输出之后都会显示一条单行消息,表明二进制文件匹配。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。