awk匹配两个文件中的两个字段

awk匹配两个文件中的两个字段,awk,comparison,matching,Awk,Comparison,Matching,我想找到file1中的字段1和2与file2中的字段2和3匹配的行,然后打印file2中的所有字段。文件2中的行数多于文件1中的行数 文件1 文件2 我试过这样的方法: awk -F 'FNR==NR{a[$1];b[$2];next} FNR==1 || ($2 in a && $3 in b)' file1 file2 > test 但出现语法错误请考虑: awk -F 'FNR==NR{a[$1];b[$2];next} FNR==1 || ($2 in a &am

我想找到file1中的字段1和2与file2中的字段2和3匹配的行,然后打印file2中的所有字段。文件2中的行数多于文件1中的行数

文件1

文件2

我试过这样的方法:

awk -F 'FNR==NR{a[$1];b[$2];next} FNR==1 || ($2 in a && $3 in b)' file1 file2 > test
但出现语法错误

请考虑:

awk -F 'FNR==NR{a[$1];b[$2];next} FNR==1 || ($2 in a && $3 in b)' file1 file2
选项
-F
需要一个参数,但没有故意提供参数。结果是
awk
将整个代码解释为字段分隔符。这就是代码没有按预期运行的原因

从问题陈述中,我不明白为什么代码中应该有
FNR==1
。所以,我把它拿走了。一旦做到了这一点,就不需要使用paren了。如果是这种情况,则代码进一步简化为:

$ awk 'FNR==NR{a[$1];b[$2];next} $2 in a && $3 in b' file1 file2 
--- rs116801199 720381 0.026 0.939 0.996 0 -1 -1 -1
awk -F 'FNR==NR{a[$1];b[$2];next} FNR==1 || ($2 in a && $3 in b)' file1 file2
$ awk 'FNR==NR{a[$1];b[$2];next} $2 in a && $3 in b' file1 file2 
--- rs116801199 720381 0.026 0.939 0.996 0 -1 -1 -1