GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel Linux Join Command pour débutants (5 exemples)

Parfois, vous souhaiterez peut-être combiner deux fichiers de manière à ce que la sortie ait encore plus de sens. Par exemple, il pourrait y avoir un fichier contenant le nom des continents et un autre fichier contenant les noms des pays situés sur ces continents, et l'exigence est de combiner les deux fichiers de manière à ce qu'un continent et le pays correspondant apparaissent sur la même ligne.

Ce n'est qu'un exemple - il pourrait y avoir des centaines de cas d'utilisation de ce type. Si vous êtes sous Linux et que vous recherchez un outil qui peut vous aider dans ces situations, vous voudrez peut-être consulter rejoindre , qui est un utilitaire de ligne de commande. Dans ce didacticiel, nous discuterons de cette commande à l'aide d'exemples faciles à comprendre.

Veuillez noter que tous les exemples mentionnés dans cet article ont été testés sur Ubuntu 16.04 et que la version de la commande join que nous avons utilisée est la 8.25.

Commande de jointure Linux

La commande join vous permet de combiner des lignes de deux fichiers sur un champ commun.

join [OPTION]... FILE1 FILE2

Voici ce que dit la page de manuel à propos de cet outil :

For each pair of input lines with identical join fields, write a line to standard output. The default 
join field is the first, delimited by blanks. When FILE1 or FILE2 (not both) is -, read standard input.

Les exemples suivants devraient vous donner une bonne idée du fonctionnement de la commande join.

1. Comment combiner des lignes de fichiers à l'aide de la commande join ?

Comprenons l'utilisation de base de la commande join. Supposons qu'il existe deux fichiers (fichier1 et fichier2) contenant les lignes suivantes :

1. Asia:
2. Africa:
3. Europe:
4. North America:

et

1. India
2. Nigeria
3. The Netherlands
4. The US

Maintenant, vous pouvez combiner ces deux fichiers de la manière suivante :

join file1 file2

Voici le résultat de la commande ci-dessus dans notre cas :

2. Comment faire pour joindre des lignes non appairables ?

Par défaut, la commande join imprime uniquement les lignes appariables. Par exemple, même si fichier1 contient un champ supplémentaire (numéro de ligne 5) :

1. Asia:
2. Africa:
3. Europe:
4. North America:
5. South America:

joindre fichier1 et fichier2 ne produira aucune sortie différente :

C'est parce que les lignes non appariables sont laissées de côté dans la sortie. Cependant, si vous le souhaitez, vous pouvez toujours les avoir dans la sortie en utilisant le -a option de ligne de commande. Cette option nécessite que vous passiez un numéro de fichier afin que l'outil sache de quel fichier vous parlez.

Par exemple, dans notre cas, la commande serait :

join file1 file2 -a 1

Vous pouvez donc voir que la ligne non appariée du fichier numéro 1 (fichier1 dans notre cas) était également affichée dans la sortie.

Notez que si vous souhaitez simplement imprimer des lignes non appariées (c'est-à-dire supprimer les lignes appariées dans la sortie), vous pouvez le faire en utilisant le -v option de ligne de commande. Cette option fonctionne exactement comme -a.

Voici un exemple de l'option -v :

3. Comment fournir des champs de jointure personnalisés ?

Comme nous le savons déjà, la jointure combine des lignes de fichiers sur un champ commun, qui est le premier champ par défaut. Cependant, si vous le souhaitez, vous pouvez spécifier un champ différent pour chaque fichier. Par exemple, considérez le contenu suivant dans fichier1 et fichier2, respectivement.

* 1. Asia:
& 2. Africa:
@ 3. Europe:
# 4. North America:
# 1. India
@ 2. Nigeria
& 3. The Netherlands
* 4. The US

Maintenant, si vous voulez que le deuxième champ de chaque ligne soit le champ commun pour la jointure, vous pouvez le dire à l'outil en utilisant le -1 et -2 options de ligne de commande. Alors que le premier représente le premier fichier, le second fait référence au deuxième fichier. Ces options nécessitent un argument numérique faisant référence au champ de jointure du fichier correspondant.

Par exemple, dans notre cas, la commande sera :

join -1 2 -2 2 file1 file2

Et voici le résultat de cette commande :

Notez que dans le cas où la position du champ commun est la même dans les deux fichiers (comme dans l'exemple dont nous venons de discuter, où c'est 2), vous pouvez remplacer la partie - 1 [champ] -2 [champ] dans la commande avec -j [champ] . Donc dans notre cas, la commande deviendrait :

joindre -j2 fichier1 fichier2

4. Comment rendre l'opération de jointure insensible à la casse ?

Par défaut, l'opération de commande de jointure est sensible à la casse. Par exemple, considérez les fichiers suivants :

fichier1

A. Asia:
B. Africa:
C. Europe:
D. North America:

fichier2

a. India
b. Nigeria
c. The Netherlands
d. The US

Maintenant, si vous essayez de joindre ces deux fichiers, en utilisant le champ commun par défaut (le premier), rien ne se passera. C'est parce que le cas des éléments de champ dans les deux fichiers est différent. Pour que la jointure ignore ce problème de casse, utilisez le -i option de ligne de commande.

Voici la commande pour notre cas :

join -i file1 file2

Et la capture d'écran suivante montre la commande en action :

5. Comment faire en sorte que la jointure ne vérifie pas les entrées triées ?

Par défaut, la commande join vérifie si l'entrée fournie est triée ou non et signale si ce n'est pas le cas. Par exemple, considérez la sortie suivante lorsque les informations du fichier1 n'ont pas été triées :

Maintenant, au cas où vous voudriez que cette erreur/avertissement disparaisse, vous pouvez le faire en utilisant le --nocheck-order option. Voici la même commande, mais avec cette option activée :

Vous pouvez donc voir que la commande de jointure n'a pas vérifié les entrées triées cette fois.

Conclusion

Join n'est peut-être pas un outil très simple à comprendre, mais une fois que vous vous y serez habitué, cela pourrait vous faire gagner un temps considérable dans certaines situations. Nous avons couvert la plupart des options de ligne de commande ici. Essayez-les et, une fois terminé, parcourez la page de manuel de la commande pour le reste.


Linux
  1. Tutoriel de commande cd Linux pour les débutants (8 exemples)

  2. Tutoriel de commande Linux comm pour les débutants (5 exemples)

  3. Tutoriel de commande Linux df pour les débutants (8 exemples)

  4. Tutoriel de commande de date Linux pour les débutants (8 exemples)

  5. Tutoriel de commande de nom d'hôte Linux pour les débutants (5 exemples)

Tutoriel Linux who Command pour débutants (8 exemples)

Tutoriel de commande Linux nl pour les débutants (7 exemples)

Tutoriel de commande Linux nm pour les débutants (10 exemples)

Tutoriel de commande Linux OD pour les débutants (6 exemples)

Tutoriel de commande Linux w pour débutants (5 exemples)

Tutoriel de commande Linux ss pour les débutants (8 exemples)