Sous Linux, la gestion et la manipulation des fichiers texte sont des tâches courantes. Deux utilitaires puissants pour cela sont join et split. La commande join fusionne les lignes de deux fichiers en se basant sur un champ commun, tandis que split divise un fichier volumineux en morceaux plus petits et plus faciles à gérer.
Joindre des fichiers par un champ commun
La commande join est un outil fondamental lorsque vous avez besoin de linux join files (joindre des fichiers Linux). Par défaut, elle combine les lignes de deux fichiers triés en fonction d'un premier champ identique.
Par exemple, imaginez que vous avez deux fichiers que vous souhaitez fusionner :
file1.txt
1 John
2 Jane
3 Mary
file2.txt
1 Doe
2 Doe
3 Sue
En utilisant la commande join, vous pouvez les combiner facilement :
$ join file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
Comme vous pouvez le constater, les fichiers ont été joints en utilisant le premier champ commun (1, 2, 3). Pour que join fonctionne correctement, les champs de jointure dans les deux fichiers doivent être triés.
Spécifier différents champs de jointure
Et si le champ commun n'est pas la première colonne ? Vous pouvez indiquer à join quels champs utiliser. Considérez ces fichiers :
file1.txt
John 1
Jane 2
Mary 3
file2.txt
1 Doe
2 Doe
3 Sue
Ici, nous devons joindre sur le deuxième champ de file1.txt et le premier champ de file2.txt. La commande serait :
$ join -1 2 -2 1 file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
L'option -1 2 spécifie le champ 2 du premier fichier, et -2 1 spécifie le champ 1 du second fichier.
Diviser les fichiers volumineux
La commande split fait l'inverse de join ; elle divise un fichier volumineux en fichiers plus petits.
split somefile
Par défaut, cette commande divise somefile en nouveaux fichiers dès qu'une limite de 1000 lignes est atteinte. Les fichiers de sortie sont nommés xaa, xab, et ainsi de suite. Vous pouvez personnaliser ce comportement, par exemple, en spécifiant un nombre de lignes différent avec l'option -l ou en divisant par taille de fichier avec l'option -b.