比较两个文件中的不同项目,并使用AWK将组合结果输出到新文件

时间:2015-02-11 08:43:01

标签: linux tcp awk

问候!

我从网络中的两个节点获取了一对文件,文件中有关于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。

请帮忙。我的代码组织得不好,任何新的衬垫都会受到赞赏。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

ARGIND是gawk特定的btw,所以检查你的awk版本。 - 艾德莫顿