【问题标题】:add a new column to the file based on another file基于另一个文件向文件添加新列
【发布时间】:2014-07-23 08:25:52
【问题描述】:

我有两个文件 file1 和 file2,如下所示。 file1 有两列,file2 有一列。我想根据file1将第二列添加到file2。如何使用 awk 做到这一点?

文件1

2WPN  B
2WUS  A
2X83  A
2XFG  A
2XQR  C

文件2

2WPN_1
2WPN_2
2WPN_3    
2WUS
2X83
2XFG_1
2XFG_2
2XQR

期望的输出

2WPN_1  B
2WPN_2  B
2WPN_3  B    
2WUS    A
2X83    A
2XFG_1  A
2XFG_2  A
2XQR    C

您的帮助将不胜感激。

【问题讨论】:

    标签: awk


    【解决方案1】:
    awk -v OFS='\t' 'FNR == NR { a[$1] = $2; next } { t = $1; sub(/_.*$/, "", t); print $1, a[t] }' file1 file2
    

    或者

    awk 'FNR == NR { a[$1] = $2; next } { t = $1; sub(/_.*$/, "", t); printf "%s\t%s\n", $1, a[t] }' file1 file2
    

    输出:

    2WPN_1  B
    2WPN_2  B
    2WPN_3  B
    2WUS    A
    2X83    A
    2XFG_1  A
    2XFG_2  A
    2XQR    C
    

    您可以将输出传递给column -t,以使其与空格而不是制表符保持一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 2016-12-21
      相关资源
      最近更新 更多