web-dev-qa-db-ja.com

行番号またはASCIIテーブルなしでhexdumpから16進値のみを印刷する方法は?

次の NIXシェルスクリプトで10進数を16進数に変換

hexdumpからhex valuesのみを印刷しようとしています。つまり、行番号とASCIIテーブルは印刷しません。

ただし、次のコマンドラインは何も出力しません。

hexdump -n 50 -Cs 10 file.bin |  awk '{for(i=NF-17; i>2; --i) print $i}'
21
0x90

hexdumpが出力に使用する正確な形式を指定できますが、少し注意が必要です。デフォルトの出力からファイルオフセットを引いたものを次に示します。

hexdump -e '16/1 "%02x " "\n"' file.bin

(私には、これは各行の末尾に余分な後続スペースを生成するように見えますが、何らかの理由でそうではありません。)

37
chepner

xxdを使用すると、このジョブに適しています。

xxd -p -l 50 -seek 10 file.bin

から man xxd

xxd - make a hexdump or do the reverse.

    -p | -ps | -postscript | -plain
        output in postscript continuous hexdump style. Also known as plain hexdump style.

    -l len | -len len
        stop after writing <len> octets.

    -seek offset
        When used after -r: revert with <offset> added to file positions found in hexdump.
51
0x90

別の方法として、xxd -p file.bin

19
twalberg

まず、ASCII情報を出力している-Cを削除します。

次に、オフセットをドロップすることができます

hexdump -n 50 -s 10 file.bin | cut -c 9-
4
glenn jackman