如何将一个文件的多列与另一个文件的一列进行比较并显示第二个文件的匹配项?

如何将一个文件的多列与另一个文件的一列进行比较并显示第二个文件的匹配项?

我有两个这样的文件:

文件1

apple fruit 10 4
strawberry fruit 22 11
berry fruit 33 33
ball toy 1 12
straw thing 2 33

文件2

strawberry straw berry
rawberry raw berry

我想将文件2的第1列与文件1的第1列进行比较,将文件2的第2列与文件1的第1列进行比较,将文件2的第3列与文件1的第1列进行比较。如果找到匹配,我想显示所有文件 1 中的三个匹配行。

在这里,输出应该是:

strawberry fruit 22 11
straw thing 2 33
berry fruit 33 33

我怎样才能做到这一点?

答案1

$ awk 'NR==FNR{a[$1]=$0} $1 in a && $2 in a && $3 in a{print a[$1] ORS a[$2] ORS a[$3]}' file1 file2
strawberry fruit 22 11
straw thing 2 33
berry fruit 33 33
  • 根据第一列保存行file1,然后如果所有三列file2行都匹配则打印匹配的行

相关内容