2 votes

Valeurs communes dans 2 colonnes dans 2 fichiers

Supposons que j'ai ces 2 fichiers délimités par des tabulations, où la deuxième colonne du premier fichier contient les valeurs correspondantes de la première colonne du deuxième fichier, j'aimerais obtenir une sortie comme celle-ci :

FichierA :

1    A
2    B
3    C

FichierB :

A    Apple
C    Cinnabon
B    Banana

J'aimerais obtenir un résultat comme celui-ci :

1   Apple
2   Banana
3   Cinnabon

Je peux écrire un script pour cela, mais j'aimerais savoir comment le faire en awk o perl en une seule ligne.

2voto

jaypal Points 34440
awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$1]=$2;next}{$2=a[$2]}1' f2 f1

1voto

Endoro Points 34982

GNU sed oneliner

sed -r 's:\s*(\S+)\s+(\S+):/\\s*\\S\\+\\s\\+\1/s/\\(\\s*\\S\\+\\s\\+\\)\1/\\1\2/:' fileB | sed -f - fileA

sortie :

1    Apple
2    Banana
3    Cinnabon

0voto

mplf Points 509

La commande souhaitée est la suivante :

$ awk 'FNR==NR{a[$1]=$2 FS $3;next}{$2=a[$2]; print}' file2 file1
1 Apple
2 Banana
3 Cinnabon

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X