我正在尝试理解 hexdump 的格式化选项。我已阅读手册页,上面说我可以使用该-e
选项告诉它以何种格式输出数据。但是,我无论如何也无法理解该选项的代码。现在,我只是试图让它从 /dev/random 打印随机行,如下所示:
6568:6C6C:7565:7568:2E62:716D:2E2C:7563
(基本上是一个伪 IPv6 地址。)但是,我真的很想了解格式化字符串,而不仅仅是有一个能解决问题的字符串。我尝试阅读手册页,但没什么帮助——它似乎提到它类似于 C 代码。好吧,我几乎没有使用 C 的经验,所以我很为难。有人能解释一下吗?
答案1
在 的手册页中hexdump
,有一整节专门介绍格式字符串的结构(搜索“格式字符串包含任意数量的格式单元”)。
为了获得您想要的输出,以下调用应该可以解决问题:
hexdump -e '7 2 "%04X:" 1 2 "%04X\n"' input_file
此处的格式字符串分为两部分。第一部分重复 7 次,每次格式化两个字节,格式为"%04X:"
(四个十六进制数字,以零填充,后跟冒号)。第二部分仅重复一次,使用两个字节"%04X\n"
完成输出行。然后,随着从输入文件读取更多数据,重复此过程。