我用下面的語法,以便找到/etc
的「grep:行太長」錯誤消息
(由丹尼斯·威廉姆森在超級用戶現場回答)
下的IP地址,但我得到的消息「的grep:線路太長「。
有人有想法如何忽略此消息,爲什麼我得到這個?
grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/
grep: line too long
我用下面的語法,以便找到/etc
的「grep:行太長」錯誤消息
(由丹尼斯·威廉姆森在超級用戶現場回答)
下的IP地址,但我得到的消息「的grep:線路太長「。
有人有想法如何忽略此消息,爲什麼我得到這個?
grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/
grep: line too long
使用查找構建文件到grep的列表,
find /etc -type f -print0 | xargs -r0 grep -E '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>'
一般發現是遍歷文件的文件系統和建築名單,其他程序的更靈活的方式。
也許你的grep有一個bug,並且偶然掃描了一個行太長的二進制文件(即grep在兩個換行符之間處理的字符過多)。見this red hat page for more details(bug page)。
find/xargs解決方案對我無效,但導致相同的錯誤。
我通過使用-I
grep選項(忽略二進制文件)解決了此問題。在我的情況下,文件列表中必須有一個二進制文件才能搜索到沒有換行符,所以grep試圖讀取一個太大的巨大行。這是我對這個錯誤意味着什麼的猜測。
我的想法來自:http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4
這可能不是爲你工作,當然,如果有一條線太長的文本文件。
爲了讓其他人明白,這個選項是印度的資本I(「-I」),而不是像利馬那樣的「l」。 – riderchap 2011-08-19 20:33:58
@riderchap很高興我讀到您的評論。稍後我會試試帽子。從Shorin的這個答案和jmtd的答覆中,似乎有兩個問題。一個文件列表太長的問題,然後一個問題是文件中的實際行太長。在我的情況下,它是文件列表和jmtd選項是最好的。對於文件中的行太長的情況,Shorin的選擇似乎是最好的,但我沒有辦法嘗試。忽略二進制文件也可能使Shorin低於文件列表中最大計數的閾值。 – Hazok 2011-09-28 00:46:37
啊!謝謝。我讓它看起來像印度而不是利馬。 – Shorin 2011-12-08 15:49:43
錯誤信息不是來自外殼,即它不是一個參數列表的問題,因爲它太長了。 – maxschlepzig 2010-09-07 09:18:37
是的,find/xargs經常被用來解決*那個問題。這不是那個問題,但是使用find/xargs解決它。 – jmtd 2010-09-13 14:25:21
@jmtd精美的作品+1。 – Hazok 2011-09-28 00:47:46