Bashを使用してLinuxでバイナリファイルの未変更 16進ダンプを作成するにはどうすればよいですか? od
およびhexdump
コマンドは両方ともダンプにスペースを挿入しますが、これは理想的ではありません。
出力内のすべての16進文字からスペースまたは改行を除いた長い文字列を単純に書き込む方法はありますか?
xxd -p file
または、すべてを1行で表示する場合:
xxd -p file | tr -d '\n'
書式文字列を使用すると、hexdumpを希望どおりに正確に動作させることができます(バイト単位で空白がまったくない)。
hexdump -ve '1/1 "%.2x"'
1/1
は「各形式が1回適用されて1バイトかかる」ことを意味し、"%.2x"
はprintfのように実際の形式文字列です。この場合:2文字の16進数。短い場合は先行ゼロ。
od
のバージョンの詳細に依存しているようです。 OSXでは、これを使用します。
od -t x1 -An file |tr -d '\n '
(これは、アドレスなしで、16進型として印刷されます。もちろん、その後に空白が削除されます。)
Perlのワンライナー:
Perl -e 'local $/; print unpack "H*", <>' file
他の回答が望ましいですが、純粋なBashソリューションの場合、 my answer here のスクリプトを変更して、ファイルの内容を表す16進文字の連続ストリームを出力できるようにしました。 (その通常モードはhexdump -C
をエミュレートすることです。)