2017-04-21 52 views
1

我有看这两个文件:如何比较两个文件中的不同列,并在第一个文件中打印?

file1: 

apples 
pears 
grapes 
oranges 
melon 

file2: 

gene1 apples 
gene2 television 
gene3 pears 
gene4 homeless 

所需的输出:

gene1 apples 
gene3 pears 

我想用awk来比较文件1的列1与文件2的列2和打印出文件2的整条生产线?我怎样才能做到这一点?

+1

这个被问了一个星期的20倍左右。只需搜索档案。 –

+1

只是从'file1'收集字段值,然后过滤'file2'的记录,如果它们匹配以前收集的任何值 – RomanPerekhrest

+0

http://stackoverflow.com/questions/42239179/fastest-way-to-find-lines-of -a文本文件从 - 另一侧大的文本文件中,庆典 –

回答

1

您可以通过使用文件中的一个的每一行作为文件2使用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

相关问题