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
的记录(如果它们与以前收集的任何值匹配)