我正在调试通过TCP传输数据的程序的输出。
出于调试目的,我已将接收程序替换为netcathexdump:

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/

10-10 12:30