通过两列匹配比较两个文件

时间:2014-07-16 10:51:46

标签: awk

我有两个带列的文件。如果第一个和两个文件的第二个列相等,我需要打印第二个文件的内容。例如:

file1

Name1 123 blabla
Name1 456 bla
Name3 777 s

file2

Name1 123 something more
Name2 456 some words
Name4 111 no

Desired output:

Name1 123 something more

我已编写此代码,但它仅适用于一列(在本例中为第二列):

awk 'BEGIN{FS=OFS="\t"} NR == FNR {f[$2]; next;} $2 in f{print $0;}' file1 file2

我在这里发现了一些相关内容:comparing two columns in two files,但我无法找到正确的方法。我试过这个但是没有用..:

awk 'BEGIN{FS=OFS="\t"} NR == FNR {f[$1 FS $2]; next;} if($1 in f && $2 in f){print $0;}'

提前致谢,

1 个答案:

答案 0 :(得分:0)

你可以拥有

awk 'NR == FNR { a[$1, $2]++; next } a[$1, $2]' file1 file2

输出:

Name1 123 something more
  • [$1, $2][$1 "," $2]不同。不知何故,Awk的实现确保$1, $2与文字字符串不匹配。