我是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信息假设它已被写入文件中。
提前完成..
答案 0 :(得分:1)
使用awk功能,该功能允许您设置RecordSeparator(RS)和OutputRecordSeperator(ORS)使用的字符,并使用NumberRecord(NR)var监视您打印的rec部分。
awk '{BEGIN RS=" ";ORS="\n";} { if (NR >20 && NR < 31) print $0}' hexFile
如果您提供有关您的文件的更多详细信息(这些数据的重复集如何?)和预期的输出,我可能会让您更有效率。
我希望这会有所帮助。