J'ai différé 2 fichiers et obtenu
1c1
< 1
---
> 1
Les deux fichiers ne contenaient que "1". En quoi est-ce différent?
1ère ligne: a
signifie ajouté, d
pour supprimé et c
pour modifié. Les numéros de ligne du fichier d'origine apparaissent avant que ces lettres et celles du fichier modifié n'apparaissent après la lettre.
2ème ligne: la ligne avec <
provient du fichier 1 et est différente du fichier 2.
La 3ème ligne est un diviseur.
4ème ligne: la ligne avec >
provient du fichier 2 et est différente du fichier 1.
(Si vous voyez =
, cela signifie que les lignes sont les mêmes dans les deux fichiers)
Et votre problème pourrait être des espaces blancs ou d'autres caractères non lisibles par l'homme: ceux-ci déclenchent également une différence.
Il existe certaines options pour manipuler les sorties.
Exemple:
[email protected]:~$ more 1 test test2 test3 [email protected]:~$ more 2 test test2 test3
format contextuel:
[email protected]:~$ diff -c 1 2 *** 1 2011-08-13 17:05:40.433966684 +0200 --- 2 2011-08-13 17:11:24.369966629 +0200 *************** *** 1,3 **** test ! test2 test3 --- 1,3 ---- test ! test2 test3
A "!" représente un changement entre les lignes qui correspondent dans les deux fichiers. Un "+" représente l'ajout d'une ligne, tandis qu'un espace vide représente une ligne inchangée. Au début du patch se trouvent les informations sur le fichier, y compris le chemin d'accès complet et un horodatage. Au début de chaque morceau se trouvent les numéros de ligne qui s'appliquent à la modification correspondante dans les fichiers. Une plage de numéros apparaissant entre des ensembles de trois astérisques s'applique au fichier d'origine, tandis que des jeux de trois tirets s'appliquent au nouveau fichier. Les plages de tronçon spécifient les numéros de ligne de début et de fin dans le fichier respectif.
Développement du commentaire de Lekensteyn sur le format unifié:
[email protected]:~$ diff -u 1 2 --- 1 2011-08-13 17:05:40.433966684 +0200 +++ 2 2011-08-13 17:11:24.369966629 +0200 @@ -1,3 +1,3 @@ test -test2 +test2 test3
Le format commence par le même en-tête de deux lignes que le format de contexte, sauf que le fichier d'origine est précédé de "---" et que le nouveau fichier est précédé de "+++". Vous trouverez ci-après un ou plusieurs hunks de modification contenant les différences de lignes dans le fichier. Les lignes contextuelles inchangées sont précédées d'un caractère d'espacement, les lignes d'addition sont précédées d'un signe plus et les lignes de suppression sont précédées d'un signe moins.
Quelques options utiles:
-b
Ignore les modifications de la quantité d'espace blanc.
-w
Ignore tous les espaces blancs.
-B
Ignore toutes les lignes vides.
-y
de sortie en 2 colonnes.
Je trouve od (octal dump) très pratique lorsque vous comparez des fichiers avec des caractères non imprimables (en particulier les fichiers dont diff décide qu'ils sont "binaires" et vous indiquent donc uniquement qu'ils diffèrent).
Dans l'exemple ci-dessous, je crée une paire de fichiers qui pourraient ressembler à ceux d'origine, puis effectuez un diff avec la sortie d'origine; Ensuite, je fais de la diff sur quelques sorties "od" différentes.
$ echo 1 & gt; 1
$ echo "1" & gt; 2
$ diff 1 2
1c1
< 1
- ---
> 1
$ od -c 1 & gt; 1.od
$ od -c 2 & gt; 2.od
$ diff 1.od 2.od
1,2c1,2
< 0000000 1 \n
< 0000002
---
> 0000000 1 \n
> 0000003
$ od -Ax -c -t x1 1 & gt; 1.od
$ od -Ax -c -t x1 2 & gt; 2.od
$ diff 1.od 2.od
1,3c1,3
< 000000 1 \n
< 31 0a
< 000002
---
> 000000 1 \n
> 31 20 0a
> 000003
Vous ne savez pas si cela peut vous aider à trouver des caractères d’espace, mais c’est pratique pour la diffraction: lien
Le lien ci-dessus fournit une description plus concise et plus claire.