2013-10-15 57 views
2

我想從grepgrep從一個文件中的字符串,但grep沒有返回任何內容(即使字符串存在於文件中)。原來,該文件以ÿþ標記開頭。如果我手動刪除它,然後grep工程。如何在不手動刪除BOM的情況下讓grep工作?grep不適用於BOM

+3

後的文件和'grep'命令的示例,請。 – fedorqui

+0

BOM的存在聽起來像是錯誤;我不確定爲什麼移除它*不是解決方案。 – chepner

+0

@anubhava - 提問者詢問如何用BOM查找文件,而不是如何在這些文件中查找文本。 – Benj

回答

1

什麼:

strings <file> | grep <pattern> 

或者檢查grep命令的手冊頁。實際情況是grep正在查看文件的前幾個字節,並確定它是二進制文件,因此無法搜索。你可以重寫此:

--binary-files=text 
+0

警告:文件可能以UTF-16編碼( - 從Windows系統接收?)。然後,即使刪除了BOM,grep(以及其他方法)也將失敗多字符ascii模式。 – rhoerbe

1

您還可以使用貓與-v(可見)選項:

cat -v file | grep pattern 
相關問題