テキストファイルをgrepしたら、バイナルファイルとして扱われる

2021-04-30

テキストファイルをgrepしたら「バイナリー・ファイルxxxは一致しました」とエラー時が表示される

grepコマンドで、テキストファイルを検索したら、下記のようなエラーが表示される場合があります

  • バイナリー・ファイルTEST.txtは一致しました
  • バイナリー・ファイル(標準入力)は一致しました
  • Binary file (standard input) matches
$ grep "TEST" TEST.txt
バイナリー・ファイルTEST.txtは一致しました

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

原因はgrepするファイルにバイナリと思われるデータが含まれており、テキストファイルではなく、バイナリファイルとして処理されてエラーとなってるみたいです
grepするファイルがテキストファイルの場合は、「-a」「–text」「–binary-files=text」のオプションをつけてテキストファイルとして扱えばOKです

# -a の場合
$ grep -a "TEST" test.txt

# --text の場合
$ grep --text "TEST" hoge.txt

# --binary-files=text の場合
$ grep --binary-files=text "TEST" hoge.log