2014-07-23 49 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以保持均勻的空間,而不是標籤。

相關問題