join (Unix) — Wikipédia

Join

Informations
Type Utilitaire UNIX (d)Voir et modifier les données sur Wikidata

join est une commande POSIX qui permet de fusionner les lignes de deux fichiers ayant des champs communs. Elle réalise des jointures, au sens de l'algèbre relationnelle, directement sur des fichiers texte.

Cette commande compare les lignes de deux fichiers triés une à une et si une correspondance est trouvée sur les colonnes passées en argument, elle affichera le regroupement des champs présents sur les mêmes lignes.

Exemple[modifier | modifier le code]

Soit le fichier contacts contenant la liste des membres d'une famille (id, nom, téléphone):

ID_1 Jean 123456 ID_2 Caroline 54321 ID_3 Louis 98765 

Et le fichier ordinateurs contenant la liste des ordinateurs de la maison (id_ordinateur, ordinateur, id_personne).

L01 Linux ID_1 M01 Mac ID_2 W01 Windows ID_2 S01 Solaris ID_4 


Premier cas simple. On veut joindre les deux fichiers sur la colonne 1 du premier fichier (-11) et la colonne 3 du deuxième fichier (-23).

% join -11 -23 contacts ordinateurs  ID_1 Jean 123456 L01 Linux ID_2 Caroline 54321 M01 Mac ID_2 Caroline 54321 W01 Windows 


Si on souhaite afficher la liste des couples personne-ordinateurs de la maison en formatant la sortie (option -o):

% join -11 -23 -o 1.2,2.2 contacts ordinateurs  Jean Linux Caroline Mac Caroline Windows 

Dans le cas d'une base de données on parlerait d'une jointure simple (STRAIGHT JOIN).


Pour afficher la liste de toutes les personnes, propriétaire ou non d'un ordinateur:

% join -a1 -e'NULL' -11 -23 -o 1.2,2.2 contacts ordinateurs    Jean Linux Caroline Mac Caroline Windows Louis NULL 

Il s'agirait ici d'une jointure gauche (LEFT JOIN) en SGBD. Louis (ID_3) n'est effectivement pas repris dans le fichier ordinateurs.


Et enfin, la jointure droite (RIGHT JOIN), la liste de tous les ordinateurs et de leur utilisateur éventuel.

% join -a2 -e'NULL' -11 -23 -o 2.2,1.2 contacts ordinateurs  Linux Jean Mac Caroline Windows Caroline Solaris NULL 

En effet, dans le fichier ordinateurs, le Solaris pointe vers un id (ID_4) qui n'existe pas dans le fichier contacts.


Voir aussi[modifier | modifier le code]

GNU Core Utilities

Liens externes[modifier | modifier le code]