根据另一个文件向文件添加新列

时间:2014-07-23 08:25:53

标签: awk

我有两个文件file1和file2,如下所示。 file1有两列,file2有一列。我想基于file1将第二列添加到file2。我怎么能用awk做到这一点?

文件1

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

file2的

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

你的帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

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,以使其与空格保持一致,而不是制表符。