使用awk比较两个文件 - 检查file1中两列中的值是否包含在file2的两列中的某个位置

时间:2017-10-31 10:19:21

标签: bash shell awk

我想检查(每一行)if1中的值(在$ 2&& $ 3列中)是否包含在file2中(在$ 1&& $ 2列中)。如果是,那么我想从file1打印$ 1,$ 2,$ 3以及从file2打印$ 3(作为第4列)。

File1中:

@ 139.51 -62.48
@ 137.36 -63.36
@ 135.44 -64.09

文件2:

137.35 -63.36 6.349
137.36 -63.36 6.348
137.37 -63.36 6.346

我到目前为止:

awk 'NR == FNR {a[$1$2];c[FNR] =$3;next} $2$3 in a {print $1, $2, $3, c[FNR]}' $file2 $file1 > $output 

但不知何故,4美元的结果值不等于file2的第3列。有人可以帮帮我吗?非常感谢! :)

我是编程新手,到目前为止使用awk和shell,所以我总是对解释感到高兴!谢谢!

1 个答案:

答案 0 :(得分:2)

由于您还没有显示您的预期输出,因此根据您的语句仅编写此代码。

awk 'FNR==NR{a[$2,$3]=$0;next} (($1,$2) in a){print a[$1,$2],$NF}' fiLE1  fiLE2

输出如下。

@ 137.36 -63.36 6.348