我正在调试通过TCP传输数据的程序的输出。
出于调试目的,我已将接收程序替换为netcat
和hexdump
:
netcat -l -p 1234 | hexdump -C
几乎像我想要的那样,将所有数据输出为一个不错的十六进制转储。现在,数据以固定块的形式传输,长度不是16的倍数,导致输出中出现偏移的行,这使发现差异变得有些困难:
00000000 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |P...............|
00000010 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.P..............|
00000020 00 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 |..P.............|
如何重新格式化输出,以便在17个字节之后开始新的一行?
它看起来应该像这样:
50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |P...............|
00 |. |
50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |P...............|
00 |. |
50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |P...............|
00 |. |
使用hexdumps
-n
参数不起作用,因为它将在达到字节数后退出。 (除非有一种方法可以保持netcat程序运行并无缝地将下一个字节管道传输到hexdump的新实例)。如果我可以在输出上使用
watch -d
来突出显示行之间的变化,那也很好。 最佳答案
对于没有字符部分的十六进制转储。hexdump -e '16/1 "%0.2x " "\n" 1/1 "%0.2x " "\n"'
关于perl - shell 魔术通缉: format output of hexdump in a pipe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5974607/