2014-07-23 52 views
1

我有两个文件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 

你的帮助,将不胜感激。

回答

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以保持均匀的空间,而不是标签。

相关问题