【发布时间】:2011-08-23 21:28:24
【问题描述】:
我正在调试通过 TCP 传输数据的程序的输出。
出于调试目的,我将接收程序替换为netcat 和hexdump:
netcat -l -p 1234 | hexdump -C
这将所有数据输出为一个不错的 hexdump,几乎就像我想要的那样。现在数据以长度不是 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 手册页上有关格式选项的所有信息?看起来你应该能够轻松地做你想做的事......
-
我为你添加了“perl”标签,那些人可能会吃掉这个,你有 Perl 踢,对吧?
标签: perl shell formatting netcat hexdump