2011-06-03 4 views
5

J'écris un script shell pour assembler les données.
J'ai 2 fichiers avec des colonnes différentes.
Une des colonnes est la même sur les deux fichiers.

Shell: assembler les données

Like : 
File 1: 
a 5 
c 7 
d 9 
b 5 

File 2: 
c 1 
d 8 
a 6 
b 3 

Pour le moment, mon script mettre les données dans un même fichier avec

paste -d ' ' 'file1' 'file2' > "file3" 

Je voudrais savoir s'il est possible de faire correspondre les 2 colonnes ensemble et afin que:

a 5 6 
b 5 3 
c 7 1 
d 9 8 

Merci

Répondre

0

Utilisez sort pour trier les deux fichiers, puis join pour rejoindre le premier champ.

2
sort file1 > file1.tmp 
sort file2 > file2.tmp 

join -t " " -j 1 file1.tmp file2.tmp 

supposaient que les caractères et les chiffres sont séparés par un espace

1

En utilisant process substitution vous pouvez trier les fichiers et les rejoindre en une seule commande.

join -t " " -j 1 <(sort file1) <(sort file2)