J'ai deux fichiers qui me semblent identiques (y compris les espaces de fin et les nouvelles lignes) mais diff dit toujours qu'ils diffèrent. Même lorsque je fais une diff -y
comparaison côte à côte, les lignes se ressemblent exactement. La sortie de diff est l'ensemble des 2 fichiers.
Une idée de la cause?
sed -n l filename
. Si cela n'aide pas, ajoutez un exemple de données etdiff
sortez ici.file
commande vous indice sur le contenu des fichiers, y compris des choses commeASCII text, with CRLF line terminators
vsASCII text
.Réponses:
Odd .. pouvez-vous essayer
cmp
? Vous voudrez peut-être utiliser le '-b
option '.page de manuel cmp - Compare deux fichiers octet par octet.
C'est l'une des bonnes choses à propos d'Unix / Linux .. tant d'outils :)
la source
-b
c'est pourignore changes in the amount of white space
.Les différences peuvent-elles être causées par des fins de ligne DOS ou UNIX, ou quelque chose de similaire?
Et si vous
hexdump
eux? Cela pourrait montrer des différences plus évidentes, par exemple:la source
Essayer:
L'
-t
option feracat
apparaître clairement tous les caractères spéciaux - par exemple.^M
pour CR,^I
pour tab.Depuis la page de manuel (OS X):
la source
Ma première supposition, qui s'avère être confirmée, est que les fichiers utilisent des fins de ligne différentes. Il pourrait y avoir une autre différence dans les espaces, comme la présence d'espaces de fin (mais vous n'obtiendrez généralement pas cela sur de nombreuses lignes) ou une indentation différente (tabulations vs espaces). Utilisez une commande qui imprime des espaces et contrôle les caractères sous une forme visible, telle que
Vous pouvez confirmer que les différences ne concernent que les fins de ligne en les normalisant d'abord. Vous pouvez avoir un
dos2unix
utilitaire; sinon, supprimez explicitement le caractère CR (^ M, \ r, \ 015) supplémentaire:ou, si
file1
c'est celui avec des terminaisons DOSla source