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.