如果前三列与另一个文件中的前三列匹配,则打印出行

如果前三列与另一个文件中的前三列匹配,则打印出行

我的 file1 有 3 列,file2 有 8 列。我想要做的是,如果在文件 1 中找到文件 2 中的前 3 列,则打印出文件 2 中的全部 8 列。

我尝试过类似的代码

awk 'NR==FNR{c[$1$2$3]++;next};c[$1$2$3]>0' file1 file2

...但它只打印出 file2 中的最后一个匹配行。

我不知道出了什么问题。有人可以帮我吗?我真的很感激!先感谢您!

文件1看起来像这样

7000000185249020    89812   89911
7000000185249020    89912   90011
7000000185249020    202532  202631
7000000185249020    202632  202704
7000000185249020    202764  202863
.....

文件2看起来像这样

7000000185249020    89812   89911   100 14.1    20  0.511   48
7000000185249020    89912   90011   100 12.7    19.8    0.642   49
7000000185249020    90012   90023   12  11  17.9    0.704   58.3

答案1

如果两个文件长度相同,可以这样做:

paste file1 file2 | awk '$1==$4 && $2==$5 && $3==$6 { print $4,$5,$6,$7,$8,$9,$10,$11}'

相关内容