awk匹配同一行

时间:2015-05-07 02:26:21

标签: awk

我想找到一行,其中file1中的字段1和2与file2中的字段1和4匹配,然后打印这些字段与file2匹配的所有行。我正在使用:

awk 'FNR==NR{a[$1];b[$2];next} $1 in a && $4 in b' file1 file2 > output

我遇到的问题是输出包含字段在两个文件中匹配但不在同一行内的行。例如,当line(下面)在file1中时:

15     70589272    rs12148337     15     70589272    rs12148337            1 

行(下面)在file2中:

10  rs181419901 0   70589272    4   2

即使字段1不匹配,输出也包含file2中的行(上面)。表面上是因为field1在另一行中匹配。我可以将命令限制为打印两个字段仅在同一行内匹配的行吗?

1 个答案:

答案 0 :(得分:4)

你非常接近:

awk 'FNR==NR{a[$1,$2];next} ($1,$4) in a' file1 file2