テキストである必要があるバイナリファイル(エクスポートされたログ)がありますが、それ以下で開くことはできません(見苦しい-バイナリファイルのように見えます)。私はviでそれを開くことができ、それを猫にすることができることがわかりました(実際のログが表示されます)が、私が本当にやりたいのはそれらを介してgrepすることです(viでそれぞれを開いてから実行する必要はありません)検索)。私がそれを行う方法はありますか?
grep -a
か?
テキストである必要があるバイナリファイル(エクスポートされたログ)がありますが、それ以下で開くことはできません(見苦しい-バイナリファイルのように見えます)。私はviでそれを開くことができ、それを猫にすることができることがわかりました(実際のログが表示されます)が、私が本当にやりたいのはそれらを介してgrepすることです(viでそれぞれを開いてから実行する必要はありません)検索)。私がそれを行う方法はありますか?
grep -a
か?
回答:
grep
とにかく使用してファイルを検索できます-入力ファイルが本当にテキストであるかどうかはあまり気にしません。「man grep」から:
-a, --text
Process a binary file as if it were text; this is equivalent to the --binary-files=text option.
--binary-files=TYPE
If the first few bytes of a file indicate that the file contains binary data, assume that the file is
of type TYPE. By default, TYPE is binary, and grep normally outputs either a one-line message saying
that a binary file matches, or no message if there is no match. If TYPE is without-match, grep assumes
that a binary file does not match; this is equivalent to the -I option. If TYPE is text, grep
processes a binary file as if it were text; this is equivalent to the -a option. Warning: grep
--binary-files=text might output binary garbage, which can have nasty side effects if the output is a
terminal and if the terminal driver interprets some of it as commands.
2番目の段落の最後に注意の言葉をマークしてください。grepからの結果を新しいファイルにリダイレクトし、vi / lessでこれを調べることができます。
\x
本当にここのように動作しませんgrep -P "\x05\x00\xc0" mybinaryfile
。
bgrep "fafafafa" test_27.6.2015.bin |less
が、test_27.6.2015.bin:00005ee4を取得します。私はこれを検索していたので、fafafafaを取得すると仮定します。マニュアルはありません。なぜこのような出力が発生するのでしょうか?
grep -a
ですか?