了解 hexdump '-e' 选项

Aze*_*ale 5 command-line

我试图了解 hexdump 的格式选项。我已经阅读了手册页,它说我可以通过使用该-e选项告诉它输出数据的格式。但是,我终生无法理解该选项的代码。现在,我只是想让它像这样从 /dev/random 打印随机行:

6568:6C6C:7565:7568:2E62:716D:2E2C:7563
Run Code Online (Sandbox Code Playgroud)

(基本上,一个伪 IPv6 地址。)但是,我真的很想了解格式化字符串,而不仅仅是有一个可以解决问题的字符串。我试过阅读手册页,但没有太大帮助——它似乎指的是它类似于 C 代码。好吧,我几乎没有使用 C 的经验,所以我被卡住了。有人可以解释一下吗?

Jam*_*dge 6

在 的手册页中hexdump,有一整节专门介绍格式字符串的结构(搜索“格式字符串包含任意数量的格式单元”)。

要获得您想要的输出,以下调用应该可以解决问题:

hexdump -e '7 2 "%04X:" 1 2 "%04X\n"' input_file
Run Code Online (Sandbox Code Playgroud)

这里的格式字符串有两部分。第一次重复 7 次,一次格式化两个字节,格式为"%04X:"(四个带零填充的十六进制数字,后跟一个冒号)。第二部分仅重复一次,并使用格式化"%04X\n"为 的两个字节来完成输出行。随着从输入文件中读取更多数据,此过程将重复进行。