バイトや単語を区切るためにスペースを使わずに5バイト目から始めて、バイナリファイルから16バイトを取得したいと思います。
hexdump
欲しいことをします。出力を妨げる列をオフセットするだけです。
$ hexdump -s5 -n16 -xe '/1 "%01X"' binfile
od
sed
作業もうまく機能し、間隔をなくすためにこれを使用する必要がありましたが、オフセット列を抑制するように指示することもできます。
$ od -An -tx1 -j5 -N16 | sed 's/ //g' binfile
なしで動作すると確信していますsed
が、od
16進モードでエンディアン(バイト交換)に関連する多くの問題があったため、見るほど簡単ではありません。たとえば、-tx1
より高い値に変更すると、バイトが変わり、目的の128ビット値が混乱します。-tx1
良いですhexdump
が、まだ空白を削除する方法が見つからないようです。しかし、バイト順序は変更せずに保持します。
ベストアンサー1
この-x
オプションは、後で書式設定しても表示されないオフセットを表示するように hexdump に指示します。このオプションを削除してください-x
。
$ hexdump -s5 -n16 -e '/1 "%01X"' <<<@abcdefghijklmnopqrstuvwxyz; echo
65666768696A6B6C6D6E6F7071727374
プラットフォームのエンディアンから2バイト値を読み取るには-x
(x86やARMなどのリトルエンディアンプラットフォームで2バイト交換)。%02X
%01X
1 ARM CPUは両方のエンディアンをサポートしますが、ほとんどすべてのUnixシステムはこれをリトルエンディアンモードで使用します。