Commandes Linux : join

JOIN

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
Fermer le menu
%d blogueurs aiment cette page :