Installé avec le paquet coreutils
Voir aussi : paste
Afficher la version de la commande join
join --version
ou
apt-cache policy coreutils
Fusion de deux fichiers triés basée sur un champ commun
join -1 champ_fichier1 -2 champ_fichier2 fichier1 fichier2
champ_fichier1 et champ_fichier2 font référence au champ commun aux deux fichiers. On spécifie ici sa position pour chaque fichier, sachant que le délimiteur par défaut est l’espace.
ex :
Avec le fichier identites.txt suivant :
Gérard Pichon 001 Julie Piétri 002 Jean Gibbon 003 Marc Assin 004
Et le fichier notes.txt suivant :
001 15/20 002 08/20 003 11/20 004 17/20
On effectue la fusion selon le champ relatif à l’ID : champ 3 de identites.txt et champ 1 de notes.txt
# join -1 3 -2 1 identites.txt notes.txt
001 Gérard Pichon 15/20
002 Julie Piétri 08/20
003 Jean Gibbon 11/20
004 Marc Assin 17/20
Spécifier un séparateur pour les champs
join -t'delimiter' -1 champ_fichier1 -2 champ_fichier2 fichier1 fichier2
ex :
Avec le fichier identites.txt suivant :
Gérard:Pichon:001 Jean:Gibbon:003 Marc:Assin:004 David:Banner:005
Et le fichier notes.txt suivant :
001:15/20 002:08/20 003:11/20 005:17/20
On effectue la fusion selon le champ relatif à l’ID : champ 3 de identites.txt et champ 1 de notes.txt. Le délimiteur est ici ‘:‘ et on affiche également les lignes non communes des deux fichiers. La sortie ne comprend pas l’ID en spécifiant ceux que l’on souhaite (champs 1 et 2 du fichier 1 et champ 2 du fichier 2).
# join -t':' -1 3 -2 1 identites.txt notes.txt -o '1.1 1.2 2.2' -a 1 -a 2
Gérard:Pichon:15/20
::08/20
Jean:Gibbon:11/20
Marc:Assin:
David:Banner:17/20
Ignorer les différences de casse lors de la comparaison des champs
join -i -1 champ_fichier1 -2 champ_fichier2 fichier1 fichier2
Fusion de deux fichiers non triés
join <(sort filename1) <(sort filename2)
ex :
Avec le fichier file1.txt suivant :
3 tomates 1 oignons 4 carottes 2 poivrons
Et le fichier file2.txt suivant :
4 12.23 3 48.02 1 104.78 2 5.99
# join <(sort file1.txt) <(sort file2.txt)
1 oignons 104.78
2 poivrons 5.99
3 tomates 48.02
4 carottes 12.23