如何只打印hexdump中没有行号或ASCII表的十六进制值?

时间:2013-03-21 16:53:41

标签: linux bash shell hexdump

关注Convert decimal to hexadecimal in UNIX shell script

我正在尝试仅从hex values打印hexdump,即不打印行号和ASCII表。

但以下命令行不会打印任何内容:

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

4 个答案:

答案 0 :(得分:48)

使用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.

答案 1 :(得分:34)

您可以指定希望hexdump用于输出的确切格式,但这有点棘手。这是默认输出,减去文件偏移量:

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

(对我来说,看起来这会在最后产生额外的尾随空间 每一行,但由于某种原因,它不会。)

答案 2 :(得分:19)

作为替代方案,请考虑使用xxd -p file.bin

答案 3 :(得分:4)

首先,删除发出ascii信息的-C

然后你可以用

删除偏移量
hexdump -n 50 -s 10 file.bin | cut -c 9-