【问题标题】:AWK - Match First 3 Fields, print $6 & $7 from both files on same lineAWK - 匹配前 3 个字段,从同一行的两个文件中打印 $6 和 $7
【发布时间】:2018-05-30 04:04:07
【问题描述】:

我的两个输入文件发生了变化,我需要匹配两个文件的前三个字段。进行匹配时,我想打印文件 1 的 $1(其中匹配的)和 $6 和 $7 以及文件二的 $6 和 $7。原始代码是一个 AWK 单行,仅匹配第一个字段。

文件1

BSTN-SANJ   BSTN    SANJ    0   0   50  105910
MRFD-SANJ   MRFD    SANJ    0   0   40  69105
NYRK-SANJ   NYRK    SANJ    0   0   30  905010
SANJ-HMRD   SANJ    HMRD    0   0   25  69010
SANJ-NRFK   SANJ    NRFK    0   0   38  61506

文件2

BSTN-SANJ   BSTN    SANJ    0   0   45  601251
MRFD-SANJ   MRFD    SANJ    0   0   39  919591
NYRK-SANJ   NYRK    SANJ    0   0   25  690155

输出

BSTN-SANJ   50  105910  45  601251  
MRFD-SANJ   40  69105   39  919591  
NYRK-SANJ   30  905010  25  690155  

【问题讨论】:

  • 请包含您的原始“AWK 一个衬里以仅匹配第一个字段”。在您的 Q 正文中(不是作为评论回复!)。祝你好运。

标签: awk


【解决方案1】:

这样就可以了

awk -v OFS='\t' '
    {key = $1 OFS $2 OFS $3} 
    NR == FNR {f2[key] = $6 OFS $7; next} 
    key in f2 {print $1, $6, $7, f2[key]}
' file2 file1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 2018-08-08
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2021-06-15
    • 2012-10-18
    • 2016-12-09
    相关资源
    最近更新 更多