在shell / awk中逐字节读取hexdump文件

时间:2011-10-22 17:05:44

标签: shell awk tcpdump hexdump

我是bash / awk编程的新手,很快就需要你的帮助

这是通过tcpdump捕获的ipv6 tcp数据包的十六进制输出 -

 6000 0000 0018 0620 0000 0000
 0000 0000 0000 0000 0000 0001 0000 0000
 0000 0000 0000 0000 0000 0002 *0026 0026
 0000 0001 0000 0002 {5}412 0065 0034 0000*
 6162 6364    

{5}以32位字为单位指定tcp包长度,tcp包为b / w * s。

 (* and {} are used to clear the question ,they are not 
  present actually in output)

现在我需要使用bash / awk脚本从此信息中提取tcp标头。

我想我需要逐字节地读取文件到tcp指定的长度,但不知道如何执行此操作。

所以任何想法如何从上面指定的输出中提取tcp信息假设它已被写入文件中。

提前完成..

1 个答案:

答案 0 :(得分:1)

使用awk功能,该功能允许您设置RecordSeparator(RS)和OutputRecordSeperator(ORS)使用的字符,并使用NumberRecord(NR)var监视您打印的rec部分。

awk '{BEGIN RS=" ";ORS="\n";} { if (NR >20 && NR < 31) print $0}' hexFile

如果您提供有关您的文件的更多详细信息(这些数据的重复集如何?)和预期的输出,我可能会让您更有效率。

我希望这会有所帮助。