ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【コマンド】grep: (標準入力): binary file matches とでた時の対処

grep コマンドを使っていたら、中身はテキストファイル なのに "binary file matches" というメッセージが出てきて処理できなかったので、その時の回避方法をここにメモします。

エラー

実行したコマンドは以下のものです。

$ grep "HOGE" sample.txt
Binary file (standard input) matches


原因は grep するファイルにバイナリと思われるデータが含まれていて、それがテキストファイルではなく、バイナリファイルとして処理されてエラーとなってるみたいです。

回避方法

回避方法は、「-a」「–text」「–binary-files=text」のオプションをつけてテキストファイルとして扱えいいみたいです。

オプション

「-a」
# 「-a」オプションを付与する場合
$ grep -a "HOGE" sample.txt
「–text」
# 「--text」オプションを付与する場合
$ grep --text "HOGE" sample.txt
「–binary-files=text」
# 「--binary-files=text」を付与する場合
$ grep --binary-files=text "HOGE" sample.log