fusionner deux fichiers par clé s’il existe dans le premier script fichier / bash

J’ai deux fichiers avec des colonnes sortingées par la valeur de la première colonne, et je veux les fusionner uniquement si la valeur du second existe dans le premier.

Le premier fichier est comme ça

man01 xxx yyy zzz man02 xxx yyy zzz man03 xxx yyy zzz man04 xxx yyy zzz 

Le deuxième fichier

 man01 sss man08 sss 

Et la sortie souhaitée est

 man01 xxx yyy zzz sss man02 xxx yyy zzz man03 xxx yyy zzz man04 xxx yyy zzz 

J’ai essayé de rejoindre mais nécessite des valeurs de second fichier dans le premier: /

Join peut le faire, avez-vous envisagé l’option -a ? Il produira une ligne pour chaque ligne de fichier non compatible dans a.txt et b.txt.

 join -a1 a.txt b.txt man01 xxx yyy zzz sss man02 xxx yyy zzz man03 xxx yyy zzz man04 xxx yyy zzz 

Eh bien, ce n’est pas une beauté de l’utilisation élégante de la ligne de commande, mais qu’en est-il?

 perl -we 'open F1, "$_) : ()} ; while () { chomp; print; if (/(\S+)/ && exists $f2{$1}) { $f2{$1} =~ /\S+\s+(.*)/ and print " $1"; } print "\n"; }' 

Mise à jour: Pendant que je travaillais sur ce qui précède, il semble que @bunting et @ c00kiemon5ter aient trouvé une réponse beaucoup plus élégante. Excellent!