2014-07-23 7 views
1

J'ai deux fichiers file1 et file2 comme indiqué ci-dessous. file1 a deux colonnes et file2 a une colonne. Je veux ajouter la deuxième colonne au fichier 2 basé sur file1. Comment puis-je faire ça avec awk?ajouter une nouvelle colonne au fichier basé sur un autre fichier

fichier1

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

fichier2

2WPN_1 
2WPN_2 
2WPN_3  
2WUS 
2X83 
2XFG_1 
2XFG_2 
2XQR 

sortie désiré

2WPN_1 B 
2WPN_2 B 
2WPN_3 B  
2WUS A 
2X83 A 
2XFG_1 A 
2XFG_2 A 
2XQR C 

votre aide serait appréciée.

Répondre

3
awk -v OFS='\t' 'FNR == NR { a[$1] = $2; next } { t = $1; sub(/_.*$/, "", t); print $1, a[t] }' file1 file2 

Ou

awk 'FNR == NR { a[$1] = $2; next } { t = $1; sub(/_.*$/, "", t); printf "%s\t%s\n", $1, a[t] }' file1 file2 

Sortie:

2WPN_1 B 
2WPN_2 B 
2WPN_3 B 
2WUS A 
2X83 A 
2XFG_1 A 
2XFG_2 A 
2XQR C 

Vous pouvez passer à la sortie column -t pour le maintenir uniforme avec des espaces et non onglets.

Questions connexes