ファイルをgrepingすると、grepは行の代わりにtrueを返します。なぜですか?

ファイルをgrepingすると、grepは行の代わりにtrueを返します。なぜですか?

私は約13Gサイズのファイルに対してgrepを実行しています。帰ってきている

Binary file file.xml matches

私はこれを期待していませんでした。次のコマンドを実行できるように、文字列を含むすべての行を返すと思いました。

grep "searchString" ./file.xml | wc -l 

私の大きなファイルのsearchStringのすべての発生回数を返します。

ベストアンサー1

grepはXMLファイルがテキストファイルではなくバイナリファイルだと思うようです。

grepがコンテンツに関係なくファイルをテキストとして処理するように強制するには、--text次のようにスイッチ(GNU grep仮定)を使用できます。

grep --text "searchString" ./file.xml | wc -l

一致の数だけを計算したい場合は、grep --countパイプの代わりに使用する方が良いwc -lので、パイプとプロセスの呼び出しを節約できます。

おすすめ記事