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

0x9*_*x90 22 linux bash shell hexdump

在UNIX shell脚本中将以下内容转换为十六进制

我试图只打印hex valuesfrom hexdump,即不打印行号和ASCII表.

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

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

0x9*_*x90 51

使用xxd对这项工作更好:

xxd -p -l 50 -seek 10 file.bin
Run Code Online (Sandbox Code Playgroud)

来自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.
Run Code Online (Sandbox Code Playgroud)

  • @andsens`hexdump`在busybox中,因此可以在嵌入式中使用,而`xxd`不是:Ь (3认同)

che*_*ner 37

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

hexdump -e '16/1 "%02x " "\n"' file.bin
Run Code Online (Sandbox Code Playgroud)

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

  • 添加“-v”以列出每一行,而不是用“*”压缩相同的行 (3认同)

twa*_*erg 19

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