Awk 基于另一个文件向文件中添加新列

Awk 基于另一个文件向文件中添加新列,awk,Awk,我有两个文件file1和file2,如下所示。file1有两列,file2有一列。我想在file1的基础上向file2添加第二列。我怎样才能用awk做到这一点 文件1 文件2 期望输出 2WPN_1 B 2WPN_2 B 2WPN_3 B 2WUS A 2X83 A 2XFG_1 A 2XFG_2 A 2XQR C 谢谢你的帮助 awk -v OFS='\t' 'FNR == NR { a[$1] = $2; next } { t = $1; sub(/_.

我有两个文件file1和file2,如下所示。file1有两列,file2有一列。我想在file1的基础上向file2添加第二列。我怎样才能用awk做到这一点

文件1

文件2

期望输出

2WPN_1  B
2WPN_2  B
2WPN_3  B    
2WUS    A
2X83    A
2XFG_1  A
2XFG_2  A
2XQR    C
谢谢你的帮助

awk -v OFS='\t' 'FNR == NR { a[$1] = $2; next } { t = $1; sub(/_.*$/, "", t); print $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
您可以将输出传递到
列-t
,以使其与空格而不是制表符保持一致

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