sda*_*aau 7 linux command-line hexdump
我真的很喜欢hexdump,尤其是因为您可以定义自定义格式;说:
$ echo -e '\x00\x01\x02\x03' | hexdump -v -e '1/1 "%_ad: "' -e '4/1 "%02X "' -e '1/1 " : "' -e '4/1 "%_p"' -e '1/1 "\n"'
0: 00 01 02 03 : ....
4: 0A : .
Run Code Online (Sandbox Code Playgroud)
所以,我可以选择每行 4 个字节,先写成十六进制,然后写成字符。但是,我在这里缺少的是“二进制字符串”(或“位字符串”)格式字符;例如,我想-e '4/1 "%08b "'在该命令行中的某处写一些类似的东西,然后得到,例如:
0: 00 01 02 03 : 00000000 00000001 00000010 00000011 : ....
4: 0A : 00001010 : .
Run Code Online (Sandbox Code Playgroud)
当然,那么可能必须指定字节序(如果应该格式化多于一个字节的组)等等......但无论如何,就我在hexdump手册中看到的而言,这种格式不存在.
所以我的问题是 - 我在 Linux 命令行上有哪些替代方案,以便我可以获得包含上述二进制字符串的格式化转储,但最大程度地保留了hexdump程序的可定制性(在字节分组方面) ) 什么时候使用它的-e选项?
通过两者一起失败的转储程序与适当的转储选项,你可以随时鹅卵石的东西hexdump和xdd,然后加入与粘贴的输出。它不漂亮,但使用支持进程替换的外壳(bash可以):
mkfifo fifo
echo -e '\x00\x01\x02\x03' |
tee fifo |
paste -d' ' \
<(hexdump -v -e '1/1 "%_ad: "' -e '4/1 "%02X "' -e '1/1 " :\n"') \
<(xxd -b -c 4 fifo | cut -d' ' -f 2-)
Run Code Online (Sandbox Code Playgroud)
输出:
0: 00 01 02 03 : 00000000 00000001 00000010 00000011 ....
4: 0A : 00001010 .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3435 次 |
| 最近记录: |