grepがデフォルトでバイナリファイルを無視しないのはなぜですか?

grepがデフォルトでバイナリファイルを無視しないのはなぜですか?

grepこのフラグの説明のマンページは-I次のとおりです。

-I      Ignore binary files.  This option is equivalent to 
        --binary-file=without-match option.

また、バイナリについては次のように言います。

 --binary-files=value Controls searching and printing of binary files.
         Options are binary, the default: search binary files but do not print
         them; without-match: do not search binary files; and text: treat all
         files as text.

バイナリファイルで一致するものに興味がある状況は想像できません。そのような状況が存在する場合、これは規則ではなく、確かに例外です。このフラグを設定せず、デフォルトでgrepバイナリを無視しないのはなぜですか?

答え1

grepが考えているのはバイナリファイルではありませんが、実際にはそうです。たとえば、PuppetのログにはANSIカラーコーディングがあるので、grepはこれをバイナリだと思います。 /var/log を見ている場合でも、まだその項目を検索したいと思います。

答え2

grepldバイナリを検索する機能は、プログラムをコンパイルするときにリンカ()がいくつかの機能を見つけることができないと文句を言うときにも役立ちます。次のコマンドを使用できます。

grep機能名/lib/lib*

その内容を含むライブラリを見つけます。 (ライブラリはバイナリです。)

答え3

バイナリファイルまたはgrepがバイナリファイルと見なすファイルを処理するには、次のようにします。

grep --binary-files=text "data" f1 f2

関連情報