“grep:line too long”错误消息

时间:2010-09-07 09:01:20

标签: grep

我使用以下语法在/etc

下查找IP地址

(Dennis Williamson在超级用户网站上的回答)

但是我收到消息“grep:line too long”。

有人知道如何忽略此消息以及为什么我会这样做?

  grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/
  grep: line too long

3 个答案:

答案 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 detailsbug page)。