GNU/Linux >> Tutoriels Linux >  >> Linux

11 exemples de commande Linux diff3 (comparer 3 fichiers ligne par ligne)

Comme vous le savez déjà, la commande Linux diff compare deux fichiers.

Cependant, l'utilitaire Linux diff3 compare trois fichiers et est également capable de fusionner la différence entre deux fichiers dans le troisième. Dans cet article, nous allons comprendre l'utilisation de la commande diff3 à travers quelques exemples.

La syntaxe de base de diff3 est :

06

1. Sortie Diff3 de base

Pour cet exemple, utilisons ces trois fichiers :parent.txt, votre.txt et mien.txt.

15

Maintenant, si la commande diff3 est exécutée sur ces trois fichiers :

23

Nous voyons que la sortie contient des informations de comparaison de ces trois fichiers. Dans la sortie ci-dessus :

  • La toute première ligne "====" signifie que les trois fichiers diffèrent.
  • Ensuite, la ligne '1:1,2c' signifie que pour le premier fichier (1:) donné en argument à diff3 (parent.txt dans notre cas), les lignes comprises entre un et deux (1,2 ) sont différents par rapport aux deux autres fichiers et doivent être modifiés (c) et ces deux lignes sont également affichées dans les deux lignes suivantes de la sortie.
  • De même, "2:1,2c" et "3:1,2c" peuvent être compris.

Veuillez noter qu'en plus d'utiliser l'utilitaire diff3, il est également utile de comprendre comment utiliser diff, colordiff, wdiff ou vimdiff pour votre comparaison typique de deux fichiers.

2. Si deux fichiers sur trois sont similaires

Pour cet exemple, supposons que les fichiers mine.txt et parent.txt sont exactement identiques.

37

Et diff3 est exécuté sur ces trois fichiers maintenant :

45

La toute première ligne ‘====3’ signifie que cette fois le fichier numéro 3 c'est à dire votre.txt est différent des deux autres. Ceci est également visible dans la sortie.

3. 'c' est pour le changement tandis que 'a' est pour l'ajout

Jusqu'à présent, nous avons vu un alphabet "c" dans la sortie. Cette lettre signifie «changement» requis dans les lignes / texte. Si l'alphabet "a" apparaît, cela signifie qu'une ligne doit être ajoutée.

Prenons un autre exemple :

53

Exécutez maintenant diff3 sur ces trois fichiers :

66

La sortie ci-dessus signifie que le changement dans le fichier3 (c'est-à-dire votre.txt) doit être ajouté dans le fichier1 (mine.txt) et le fichier2 (parent.txt) pour rendre les trois fichiers similaires. Alternativement, la deuxième ligne de votre.txt peut être modifiée (c) pour rendre les trois fichiers similaires.

4. Afficher les modifications qui se chevauchent à l'aide de l'option -x

L'indicateur -x peut être utilisé pour afficher les modifications qui provoquent des chevauchements. L'ordre des noms de fichiers donnés en argument à diff3 est important ici. Par exemple :

78

signifie que vous souhaitez fusionner dans mine.txt les modifications qui transformeraient parent.txt en votre.txt

Prenons un exemple :

85

Exécutez diff3 maintenant :

95

Nous voyons donc que
la sortie indique que la troisième ligne de mine.txt doit être remplacée par "bye" afin de fusionner les modifications qui transformeraient parent.txt en your.txt

5. Afficher les modifications non fusionnées à l'aide de l'option -e

L'option -e peut être utilisée pour afficher les modifications non fusionnées de parent.txt vers votre.txt dans le mien.txt.
En considérant les mêmes fichiers que ceux utilisés dans l'exemple ci-dessus :

102

Nous voyons donc que la sortie montre les modifications non fusionnées.

6. Sortie du fichier fusionné à l'aide de l'option -m

Un fichier fusionné comprenant le contenu des trois fichiers peut être produit à l'aide de l'option -m. Par exemple, si les trois fichiers suivants sont :

110

Maintenant, si diff3 est exécuté avec l'option -m :

125

Ainsi, la sortie ci-dessus montre le contenu du fichier fusionné qui a fusionné le contenu des trois fichiers fournis en tant qu'arguments à diff3.

7. Comprendre les conflits à l'aide de l'option -m

Produire un fichier fusionné (à partir des trois fichiers) n'est pas toujours un jeu d'enfant (comme le montre l'exemple ci-dessus).

Considérez le contenu du fichier d'entrée ci-dessous :

139

Si diff3 est exécuté sur les fichiers ci-dessus, la sortie suivante s'affiche :

141

Ici, les deux premières lignes font partie incontestée du fichier fusionné, mais le conflit réel est affiché entre <<<<<<>>>>>> avec les noms et le contenu des fichiers.

8. Acceptez un argument de stdin en utilisant '-'

Un '-' peut être utilisé à la place de l'un des noms de fichiers pour accepter l'entrée de stdin pour cet argument.

154

Comme nous pouvons le voir, lorsque la commande ci-dessus a été exécutée, le contenu du troisième fichier a été donné via stdin. Notez qu'après avoir entré le contenu du fichier à partir de stdin, il faut appuyer sur la combinaison de touches ctrl+d pour obtenir la sortie de diff3.

9. diff3 utilise l'outil diff pour comparer les fichiers

Bien que diff3 se vante de comparer 3 fichiers, il utilise en fait l'outil diff en interne pour effectuer les comparaisons entre deux fichiers. Cela peut être confirmé en passant un exécutable comme argument d'entrée :

161

Nous pouvons donc voir dans la sortie ci-dessus, l'erreur de commande diff3 indiquant que le programme subsidiaire "diff" a échoué.

10. Spécifiez un programme diff via l'option –diff-program

La commande diff3 offre la flexibilité de fournir un programme diff comme argument afin que celui-ci puisse être utilisé pour comparer des fichiers et fournir les résultats que diff3 peut utiliser. Cette fonctionnalité est obtenue en utilisant l'option –diff-program.

174

11. Traiter tous les fichiers comme du texte en utilisant l'option -a

Comme vous pouvez le voir dans l'exemple 9 ci-dessus, lorsque nous avons passé un fichier non texte (un exécutable a.out), alors diff3 a renvoyé une erreur. Mais si nous voulons dire à diff3 de comparer même les fichiers non texte, alors une option -a peut être utilisée qui dit à diff3 de considérer tous les fichiers d'entrée comme des fichiers texte. Par exemple :

181

Ainsi, la sortie ci-dessus montre que diff3 a essayé de comparer même un fichier exécutable en le traitant comme un fichier texte.

Articles Diff supplémentaires

  • 4 principaux outils de différence de fichiers sous UNIX/Linux :Diff, Colordiff, Wdiff, Vimdiff
  • BZ est Eazy ! exemple bzdiff
  • Visual File Diff avec Vimdiff - Cela fait une différence !
  • La puissance des commandes Z – Exemples Zdiff

Linux
  1. Exemples de commandes Linux tail

  2. 5 Exemples de commandes Wget pour télécharger des fichiers sous Linux.

  3. ln Exemples de commandes sous Linux

  4. dd Exemples de commandes sous Linux

  5. file Exemples de commandes sous Linux

Commande lsof sous Linux (10 exemples)

Commande Touch sous Linux (5 exemples)

Commande Linux WC avec exemples

Exemples de commande Linux diff

Exemples de commande Linux cat

Exemples de commande Linux gzip