【发布时间】:2010-09-07 09:01:19
【问题描述】:
我使用以下语法来查找/etc 下的 IP 地址
(由 Dennis Williamson 在超级用户网站上回答)
但我收到消息“grep: line too long”。
有人知道如何忽略此消息以及为什么我会收到此消息?
grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/
grep: line too long
【问题讨论】:
标签: 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
【问题讨论】:
标签: grep
find/xargs 解决方案对我不起作用,但导致了同样的错误。
我通过使用-I grep 选项(忽略二进制文件)解决了这个问题。在我的情况下,要搜索的文件列表中必须有一个没有换行符的二进制文件,因此 grep 尝试读取一个太大的巨大行。这是我对这个错误意味着什么的猜测。
我的想法来自:http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4
如果文本文件的行太长,这当然可能不适合您。
【讨论】:
使用 find 构建要 grep 的文件列表,
find /etc -type f -print0 | xargs -r0 grep -E '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>'
通常 find 是一种更灵活的遍历文件系统并为其他程序构建文件列表的方法。
【讨论】:
也许你的 grep 有一个错误,并且意外地扫描了一个带有太长行的二进制文件(即 grep 处理两个换行符之间的字符太多)。请参阅this red hat page for more details (bug page)。
【讨论】: