Fusionner deux files

J'ai ce file1.txt

deiauk 9 kespaul 8 luktol 7 titkur 6 

et autre file2.txt

 kespaul b deiauk a 

Et je veux merge les deux files en un par première valeur, donc mon résultat devrait être

 deiauk 9 a kespaul 8 b luktol 7 titkur 6 

 sort file2.txt | join -a 1 file1.txt - 

join nécessite une input sortingée. Le '-' spécifie que l'input standard sera utilisée pour le deuxième file, ce qui permet d'utiliser la sortie de sort comme input. Le '-a 1' indique que les lignes non appariées du premier file seront incluses dans la sortie.

Vous pouvez utiliser la command de jointure (il sera bon d'avoir des files sortingés)

 join file1.txt file2.txt -a 1 

Les files doivent être sortingés, alors voici tout sur une seule ligne.

 sort file1.txt > f1s ; sort file2.txt >f2s ; join -1 1 -2 1 -a 1 -a 2 f1s f2s ; rm f1s f2s 

Avec awk vous pouvez faire:

 awk ' NR==FNR { k[$1]=$2; next } { print $0, k[$1] } ' file2.txt file1.txt 

Remarque: Cette solution awk fonctionne également sur datatables d'input brutes non sortingées; pas besoin de process coûteux supplémentaires.