我使用以下语法在/etc
(Dennis Williamson在超级用户网站上的回答)
但是我收到消息“grep:line too long”。
有人知道如何忽略此消息以及为什么我会这样做?
grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/
grep: line too long
答案 0 :(得分:21)
find / xargs解决方案对我不起作用,但导致了同样的错误。
我使用-I
grep选项(忽略二进制文件)解决了这个问题。在我的情况下,搜索文件列表中必须有一个二进制文件没有换行符,所以grep尝试读取一个太大的巨大行。这是我对此错误意味着什么的猜测。
我从http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4
得到了这个想法如果文本文件的行太长,这可能对你不起作用。
答案 1 :(得分:5)
使用find构建grep文件列表,
find /etc -type f -print0 | xargs -r0 grep -E '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>'
通常,find是一种更灵活的遍历文件系统和为其他程序构建文件列表的方法。
答案 2 :(得分:1)
也许你的grep有一个bug,并且偶然扫描一个行太长的二进制文件(即grep的字符太多,无法在两个换行符之间处理)。请参阅this red hat page for more details(bug page)。