如何比较两个文件中的不同列,并在第一个文件中打印出来?

时间:2017-04-21 15:28:47

标签: awk

我有两个看起来这样的文件:

file1: 

apples 
pears 
grapes
oranges 
melon 

file2: 

gene1  apples
gene2  television
gene3  pears
gene4  homeless 

期望的输出:

gene1  apples
gene3  pears

我想用awk比较file1的column1和file2的column2并打印出整行的file2?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用file1的每一行作为file2上使用的grep值来执行此操作,如下所示:

cat file1.txt | xargs -I{} sh -c 'cat file2.txt | grep {}'

甚至更好:

grep -f file1.txt file2.txt

注意:

第一个例子容易受到注入攻击。也就是说,有人可能会将恶意bash命令放入您处理的文本文件中以执行它。第二个例子并非如此。

第二个例子的主要缺点是,如果你在file1的末尾有额外的空格,它就不会匹配。 "apple"的处理方式与"apple " (第二个苹果末尾的空格)的处理方式不同。

资源:

More comprehensive answer