原文鏈接 http://blog.csdn.net/yaochunnian/article/details/7261006
grep 文件報錯 “Binary file ... matches” 原因:文件為binary文件 解決:strings vers.log.2010-03-09 | grep -i ‘mezimedia’ 或者 grep -a -i ‘mezimedia’ vers.log.2010-03-09 grep命令是linux下的行過濾工具,其參數繁多,下面就一一介紹個個參數的作用,希望對大家有所幫助。 grep -- print lines matching a pattern (將符合樣式的該行列出) ◎語法: grep [options] PATTERN [FILE...] grep用以在file內文中比對相對應的部分,或是當沒有指定檔案時, 由標准輸入中去比對。 在預設的情況下,grep會將符合樣式的那一行列出。 此外,還有兩個程序是grep的變化型,egrep及fgrep。 其中egrep就等同於grep -E ,fgrep等同於grep -F 。 ◎參數 2. -a或--text grep原本是搜尋文字文件,若拿二進制的檔案作為搜尋的目標, 則會顯示如下的訊息: Binary file 二進制文件名 matches 然后結束。 若加上-a參數則可將二進制檔案視為文本文件搜尋, 相當於--binary-files=text這個參數。 ex: (從二進制檔案mv中去搜尋panda樣式) (錯誤!!!) $ grep panda mv Binary file mv matches (這表示此檔案有match之處,詳見--binary-files=TYPE ) $ (正確!!!) $ grep -a panda mv 6. --binary-files=TYPE 此參數TYPE預設為binary(二進制),若以普通方式搜尋,只有2種結果: 1.若有符合的地方:顯示Binary file 二進制文件名 matches 2.若沒有符合的地方:什么都沒有顯示。 若TYPE為without-match,遇到此參數, grep會認為此二進制檔案沒有包含任何搜尋樣式,與-I 參數相同。 若TPYE為text, grep會將此二進制文件視為text檔案,與-a 參數相同。 Warning: --binary-files=text 若輸出為終端機,可能會產生一些不必要的輸出。 16. -I grep會強制認為此二進制檔案沒有包含任何搜尋樣式, 與--binary-files=without-match參數相同。 ex: $ grep -I panda mv 18. -L, --files-without-match 不顯示平常一般的輸出結果,反而顯示出沒有符合的文件名稱。 19. -l, --files-with-matches 不顯示平常一般的輸出結果,只顯示符合的文件名稱。 Shell Script傾向將傳統的grep移植,避開-q及-s參數, 且將輸出限制到/dev/null。 POSIX: 定義UNIX及UNIX-like系統需要提供的功能。 25. -V, --version 顯示出grep的版本號到標准錯誤。 當您在回報有關grep的bugs時,grep版本號是必須要包含在內的。 26. -v, --invert-match 顯示除搜尋樣式行之外的全部。
