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

Awk 如何比较两个文件中的不同列,并在第一个文件中打印出来?,awk,Awk,我有两个文件如下所示: file1: apples pears grapes oranges melon file2: gene1 apples gene2 television gene3 pears gene4 homeless 期望输出: gene1 apples gene3 pears 我想使用awk比较file1的第1列和file2的第2列,并打印出file2的整行内容?我该怎么做 您可以将文件1的每一行用作文件2上使用的grep值,如下所示: ca

我有两个文件如下所示:

file1: 

apples 
pears 
grapes
oranges 
melon 

file2: 

gene1  apples
gene2  television
gene3  pears
gene4  homeless 
期望输出:

gene1  apples
gene3  pears

我想使用awk比较file1的第1列和file2的第2列,并打印出file2的整行内容?我该怎么做

您可以将文件1的每一行用作文件2上使用的grep值,如下所示:

cat file1.txt | xargs -I{} sh -c 'cat file2.txt | grep {}'
或者更好:

grep -f file1.txt file2.txt
注:

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

第二个示例的主要缺点是,如果在file1的末尾有额外的空间,它将不匹配。也就是说,
“apple”
的处理方式将不同于
“apple”
(请注意第二个苹果末尾的空格)

资源:


这一问题每周被问20次左右。只需搜索存档。只需从
file1
中收集字段值,然后过滤
file2
的记录(如果它们与以前收集的任何值匹配)