我有两个文件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
你的帮助将不胜感激。
答案 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
,以使其与空格保持一致,而不是制表符。