"grep:line too long"错误消息

lid*_*dia 9 grep

我使用以下语法来查找IP地址 /etc

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

但我得到的消息是"grep:line too long".

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

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

Sho*_*rin 23

find/xargs解决方案对我不起作用,但导致了同样的错误.

我通过使用-Igrep选项(忽略二进制文件)解决了这个问题.在我的情况下,搜索文件列表中必须有一个二进制文件没有换行符,所以grep尝试读取一个太大的巨大行.这是我对这个错误意味着什么的猜测.

我从以下网址获得了这个想法:http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4

当然,如果文本文件的行太长,这可能对您不起作用.

  • 啊! 谢谢。我让它看起来像印度,而不是利马。 (2认同)

jmt*_*mtd 4

使用find构建grep文件列表,

find /etc -type f -print0 | xargs -r0 grep -E '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>'
Run Code Online (Sandbox Code Playgroud)

通常,find是一种更灵活的遍历文件系统和为其他程序构建文件列表的方法.