Join (Unix) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

join est une commande POSIX qui permet de fusionner les lignes de deux fichiers ayant des champs communs. Il fonctionne comme les jointures des bases de données relationnelles mais pour 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

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 veux 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 de les 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.

Page générée en 0.094 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise