我正在调试通过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 |. |
使用十六进制转储命令的
-n
参数不起作用,因为它会在达到指定字节数后退出。(除非有一种方法可以保持netcat程序运行并无缝地将下一个字节传输到新的hexdump实例中)。此外,如果我可以在输出上使用
watch -d
,以便突出显示行之间的更改,那就太棒了。