grep 遇到 binary file (standard input) matches 解決方法

本篇 ShengYu 紀錄使用 grep 遇到 binary file (standard input) matches 的解決方法,某天使用 grep 時出現了 Binary file (standard input) matches 這樣的錯誤訊息,然後之後的 grep 就沒有東西了,看起來這個訊息是說 grep 從標準輸入讀取處理時遇到了 Binary file 二進制檔,但我很確定我是 cat 文字檔給 grep,那怎麼辦?

解決方法:
grep 使用 -a 選項(--text 選項也可),就是叫 grep 指令遇到 binary 就把它當文字處理,像這樣寫,

1
grep -a 'pattern'

所以我原本的指令是用 cat 把文字檔印出來再導給 grep 處理,

1
cat xxx.txt | grep 'pattern'

加了 -a 改寫後變成這樣,

1
cat xxx.txt | grep -a 'pattern'

這樣就搞定了!

其他參考
grep returns “Binary file (standard input) matches” when trying to find a string pattern in file - Unix & Linux Stack Exchange
https://unix.stackexchange.com/questions/335716/grep-returns-binary-file-standard-input-matches-when-trying-to-find-a-string

其它相關文章推薦
Linux 常用指令教學懶人包
Linux grep/ack/ag 搜尋字串用法與範例
Linux ag 搜尋字串用法與範例(比 grep 還快)
Linux cut 字串處理用法與範例
Linux sed 字串取代用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例
Linux kill 指令砍掉指定的 process name