GNU/Linux >> Tutoriels Linux >  >> Linux

Comment comparer trois fichiers sous Linux à l'aide de l'outil diff3

Dans l'un de nos didacticiels précédents, nous avons présenté un utilitaire de ligne de commande Linux, appelé diff, qui vous permet de comparer deux fichiers ligne par ligne. Mais que se passe-t-il si l'exigence est de comparer non pas deux, mais trois fichiers ? Oui, il existe également un utilitaire de ligne de commande Linux pour cela, et il s'appelle à juste titre diff3 .

Si vous recherchez un tel outil, ne cherchez pas plus loin, car dans ce didacticiel, nous expliquerons l'utilisation de diff3 à l'aide d'exemples faciles à comprendre.

But before we move forward, we would like you to know that all the examples mentioned in this tutorial have been tested on Ubuntu 14.04 with bash version 4.3.11(1), and the version of diff3 that we've used is 3.3.

Installer diff3

L'outil diff3 sera probablement installé par défaut sur votre système - sur Ubuntu, au moins. Mais si ce n'est pas le cas, ne vous inquiétez pas, vous pouvez facilement le faire en installant le package GNU Diffutils. Pour savoir comment télécharger et installer le package sur votre système, rendez-vous ici.

Utilisation Diff3

Comme l'utilitaire diff3 compare trois fichiers, pour nos exemples d'utilisation, nous devrons prendre trois fichiers que nous transmettrons en entrée à l'outil.

Voici le fichier 1 :

This is line1 with some change
This is line2
This is line3

Voici le fichier 2 :

This is line1
This is line2
This is line3

Et voici le fichier3 :

This is line1
This is line2
This is line3

De toute évidence, si nous voyons le contenu de ces trois fichiers, le seul changement est dans la première ligne du premier fichier. Voyons maintenant comment diff3 signale ce changement.

Voici comment nous pouvons utiliser diff3 dans ce cas :

diff3 file1 file2 file3

Et voici la sortie qu'il produit :

====1
1:1c
This is line1 with some change
2:1c
3:1c
This is line1

Vous pouvez comprendre la sortie de la manière suivante :

  • La première ligne qui commence par quatre signes "=" et se termine par le chiffre "1" indique que la modification se trouve dans le premier fichier.
  • Dans la ligne suivante, le premier '1' signifie fichier1 ; le '1c' après deux-points 'signifie que la première ligne contient'. La ligne réelle est affichée sur la ligne suivante de la sortie.
  • De même, 2:1c et 3:1c signifient "la première ligne de fichier2 et fichier3 contient". Et comme le contenu de la ligne est le même dans les deux fichiers, la ligne réelle n'est affichée qu'une seule fois, à la fin de la sortie.

Pour clarifier les choses, prenons un autre cas où le changement est dans le fichier3.

Voici le fichier 1 :

This is line1
This is line2
This is line3

Voici le fichier 2 :

This is line1
This is line2
This is line3

Et voici le fichier3 :

This is line1 with some change
This is line2
This is line3

La commande reste la même :

diff3 file1 file2 file3

Et voici le résultat :

====3
1:1c
2:1c
This is line1
3:1c
This is line1 with some change

Ainsi, la sortie dans ce cas peut être interprétée comme :

  • Le changement est dans le fichier3
  • Fichier1 et fichier2 contiennent "Ceci est ligne1" comme première ligne
  • Alors que le fichier3 contient "Ceci est la ligne1 avec quelques modifications" comme première ligne.

C'était tout sur la façon dont les rapports diff3 changent de ligne. Voyons maintenant comment se comporte diff3 si l'un des fichiers contient une ligne supplémentaire :

Alors que le fichier1 et le fichier2 restent identiques, voici le fichier3 :

This is line1
This is line2
This is line3
This is line4

Comme il ressort clairement de son contenu, file3 contient désormais une ligne supplémentaire à la fin.

Exécutons la même commande diff3 :

diff3 file1 file2 file3

Et voici la sortie que la commande produit :

====3
1:3a
2:3a
3:4c
This is line4

La sortie commence par dire que le changement est dans le fichier3. Le changement se trouve dans la quatrième ligne de file3 (3:4c), qui est une nouvelle ligne par rapport à file1 et file2.

Jusqu'à présent, nous avons discuté de cas simples. Prenons quelques situations un peu complexes. Par exemple, considérez que fichier1, fichier2 et fichier3 contiennent les éléments suivants :

This is line1
This is line2 with some change
This is line3
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3 with some change

Alors maintenant, file1 et file2 contiennent des modifications, et cela aussi dans des lignes différentes. Voyons ce que diff3 produit dans ce cas :

====
1:2,3c
This is line2 with some change
This is line3
2:2,3c
This is line2
This is line3
3:2,3c
This is line2
This is line3 with some change

Comme vous pouvez le voir dans la sortie ci-dessus, la première ligne ne contient aucun nombre. En effet, ce n'est plus un, mais plusieurs fichiers qui contiennent désormais des modifications. Pour diff3, les lignes 2 et 3 des trois fichiers sont désormais différentes. C'est la raison pour laquelle au lieu d'un seul nombre après deux-points (:), la sortie contient maintenant une plage - '2,3', ce qui signifie ligne 2 à ligne 3.

Prenons un autre exemple. Supposons que cette fois, les trois fichiers contiennent les informations suivantes : 

This is line1
This is line2
This is line3
This is line4
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3
This is line4
This is line5

Désormais, lorsque la commande diff est exécutée, elle produit la sortie suivante :

====
1:4c
This is line4
2:3a
3:4,5c
This is line4
This is line5

Ici, si vous essayez de comprendre, la commande diff3 indique que les modifications sont après la ligne 3 dans les trois fichiers. Alors que fichier1 contient la ligne "Ceci est ligne4" comme quatrième ligne, fichier3 contient "Ceci est ligne4" et "Ceci est ligne5" comme quatrième et cinquième lignes, respectivement. Le file2, en revanche, ne comporte que 3 lignes.

C'était donc une question de travail de base sur diff3. Pour ce que ça vaut, voici ce que dit la documentation officielle à propos de l'outil :"Vous pouvez utiliser le diff3 commande pour afficher les différences entre trois fichiers. Lorsque deux personnes ont apporté des modifications indépendantes à un original commun, diff3 peut signaler les différences entre la version originale et les deux versions modifiées, et peut produire un fichier fusionné contenant les modifications des deux personnes ainsi que des avertissements sur les conflits.".

Conclusion

Nous venons de gratter la surface ici, Diff3 est capable de faire beaucoup plus. Par exemple, comme le souligne également la documentation officielle, vous pouvez également l'utiliser pour fusionner les modifications. De plus, il existe de nombreuses options de ligne de commande qui vous permettent de personnaliser la sortie de la commande ainsi que d'accéder à d'autres fonctionnalités qu'elle offre. Tout est là sur la page de manuel, parcourez-la.


Linux
  1. Comment gérer les fichiers journaux à l'aide de Logrotate sous Linux

  2. Comment arrêter ou redémarrer Linux à l'aide de la ligne de commande

  3. Comment redémarrer Linux en utilisant la ligne de commande

  4. Comment trier des fichiers sous Linux à l'aide de la commande Sort

  5. Comment comparer des fichiers binaires sous Linux ?

Comment partager des fichiers localement sur Linux en utilisant NitroShare

Comment renommer des fichiers en utilisant la ligne de commande sous Linux

Comment comparer des fichiers sous Linux à l'aide de l'outil Meld (Diff/Merge)

Comment comparer deux fichiers dans un terminal Linux

Comment copier des fichiers sous Linux à l'aide de la commande CP

Comment télécharger des fichiers dans Rocky Linux 8 sur la ligne de commande à l'aide de wget