Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在shell/awk中逐字节读取hextump文件_Shell_Awk_Tcpdump_Hexdump - Fatal编程技术网

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

在shell/awk中逐字节读取hextump文件,shell,awk,tcpdump,hexdump,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数据包长度

我是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信息已写入一个文件中,我想知道如何从上面指定的输出中提取tcp信息


Thanx提前..

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

awk '{BEGIN RS=" ";ORS="\n";} { if (NR >20 && NR < 31) print $0}' hexFile
awk'{BEGIN RS=“”;ORS=“\n”;}{if(NR>20&&NR<31)打印$0}'hexFile
如果您提供有关文件的更多详细信息(这些数据的重复集看起来如何?)和预期输出,我可能会使您的效率更高


我希望这能有所帮助。

b/w是否意味着介于两者之间?你的问题是每行的字数不同吗?您可以设置记录sep(RS=“”;ORS=“\n”),使每4位数字位于单独的行上。这有用吗?祝你好运。你的b/w意思是介于和之间,请在下面的答案栏中发布你的完整答案,这样我就可以接受它并关闭这个问题的线程。