我想查找 file1 中的字段 1 和 2 与 file2 中的字段 1 和 4 匹配的行,然后打印这些字段与 file2 中的字段匹配的所有行。我正在使用:
awk 'FNR==NR{a[$1];b[$2];next} $1 in a && $4 in b' file1 file2 > output
我遇到了一个问题,输出包含两个文件中字段匹配的行,但不在同一行中。例如,当行(如下)位于 file1 中时:
15 70589272 rs12148337 15 70589272 rs12148337 1
行(下面)位于 file2 中:
10 rs181419901 0 70589272 4 2
即使字段 1 不匹配,输出也包含文件 2 中的行(上面)。表面上是因为 field1 确实在另一行中匹配。我可以限制命令打印两个字段仅在同一行内匹配的行吗?
最佳答案
你已经非常接近了:
awk 'FNR==NR{a[$1,$2];next} ($1,$4) in a' file1 file2
关于awk 匹配同一行中两个文件中的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090908/