问候!
我从网络中的两个节点获取了一对文件,文件中有关于TCP段发送/接收时间,IP ID号,段类型,序列号等的记录。
对于相同的TCP流,它在发送方看起来像这样:
1420862364.778332 50369 seq 17400:18848
1420862364.780798 50370 seq 18848:20296
1420862364.780810 50371 seq 20296:21744
....
或接收方(1秒延迟,IP ID为50371的段丢失)
1420862364.778332 50369 seq 17400:18848
1420862364.780798 50370 seq 18848:20296
....
我想将两个文件中的IP标识号进行比较并输出到新文件中,如下所示:
1420862364.778332 1420862365.778332 50369 seq 17400:18848 o
1420862364.780798 1420862365.780798 50370 seq 18848:20296 o
1420862364.780810 1420862365.780810 50371 seq 20296:21744 x
有到达接收方的时间,并且通过比较id字段,当在接收方sid(丢包)中找不到相同的值时,将添加x,否则o将在那里。
我已经有这样的代码,
awk 'ARGIND==1 {w[$2]=$1}
ARGIND==2 {
flag=0;
for(a in w)
if($2==a) {
flag=1;
print $1,w[a],$2,$3,$4;
break;
}
if(!flag)
print $1,"x",$2,$3,$4;
}' file2 file1 >file3
但它在Linux中不起作用,它在我按下Enter后立即停止,并且只留下空文件。
Shell脚本包含这些代码已通过chomd + x。
请帮忙。我的代码组织得不好,任何新的衬垫都会受到赞赏。
感谢您的时间。
答案 0 :(得分:0)
ARGIND
是gawk特定的btw,所以检查你的awk版本。 - 艾德莫顿