【问题标题】:awk to match two fields in two files within same rowawk 匹配同一行中两个文件中的两个字段
【发布时间】:2015-05-07 10:34:11
【问题描述】:

我想查找 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 不匹配,输出也包含来自 file2 的行(上图)。表面上是因为 field1 确实在另一行中匹配。我可以将命令限制为打印两个字段仅在同一行内匹配的行吗?

【问题讨论】:

    标签: awk


    【解决方案1】:

    你已经很接近了:

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

    【讨论】:

      猜你喜欢
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2018-10-25
      • 2018-08-08
      • 1970-01-01
      • 2014-12-25
      相关资源
      最近更新 更多