Linux grepコマンドで「バイナリファイル (標準入力) に一致しました 」の対応

                 
Linux
この記事は約2分で読めます。

ASUSルーター RT-AX56UのシステムログをSyslogサーバーとしても利用しているRaspberry Piに転送しています。

このログをgrepしたときに、「バイナリファイル (標準入力) に一致しました」と最終行に表示されました。

テキスト処理をするときに、この一行が表示されると非常に邪魔ですので、「バイナリファイル (標準入力) に一致しました」が表示されないようにしなければなりません。

英語表記だと、Binary file (standard input) matches です。

 

事象

こんな感じで表示されます。

grepした結果をパイプで次のコマンドに渡す場合に邪魔です。

 

 

対応

grepのオプション a を使います。

-a は、バイナリファイルをテキストファイルとみなして処理します。
–binary-files=text オプションと同じ意味のようです。

知りませんでした。

-aを付けていないときは、テキストファイルとして扱われていなかったためでしょうか。検索できたレコードが増えました。

ファイルの文字コード形式に注意を払わないと、正しい結果が得られないですね。

これは気を付けなければなりません。

ちなみに、検索対象ファイルの /var/log/remote-syslog.1 は、nkf -g で文字コードを確認したら、ASCIIでした。

 

以上、「バイナリファイル (標準入力) に一致しました」が出たときの対処法でした。

コメント

タイトルとURLをコピーしました