Ich habe zwei Dateien, die für mich identisch aussehen (einschließlich nachfolgender Leerzeichen und Zeilenumbrüche), aber diff sagt immer noch, dass sie sich unterscheiden. Selbst wenn ich einen diff -y
Nebeneinander-Vergleich mache , sehen die Linien genau gleich aus. Die Ausgabe von diff sind die gesamten 2 Dateien.
Irgendeine Idee, woran es liegt?
sed -n l filename
. Wenn es nicht hilft, fügen Sie ein Datenbeispiel hinzu unddiff
geben Sie es hier aus.file
Befehl wird Sie über Datei - Inhalt andeuten, einschließlich solcher Dinge wieASCII text, with CRLF line terminators
vsASCII text
.Antworten:
Odd .. kannst du es versuchen
cmp
? Möglicherweise möchten Sie auch die-b
Option ' ' verwenden.cmp man page - Vergleicht zwei Dateien byteweise.
Dies ist eines der schönen Dinge über Unix / Linux .. so viele Tools :)
quelle
-b
ist fürignore changes in the amount of white space
.Könnten die Unterschiede durch DOS- oder UNIX-Zeilenenden oder ähnliches verursacht werden?
Was ist, wenn Sie
hexdump
sie? Dies könnte deutlicher Unterschiede aufzeigen, zB:quelle
Versuchen:
Die
-t
Option bewirktcat
, dass Sonderzeichen deutlich angezeigt werden - z.^M
für CR,^I
für tab.Aus der Manpage (OS X):
quelle
Meine erste Vermutung, die sich als bestätigt herausstellt, ist, dass die Dateien unterschiedliche Zeilenenden verwenden. Es kann sich auch um einen anderen Unterschied zwischen Leerzeichen handeln, z. B. um das Vorhandensein von nachgestellten Leerzeichen (dies wird jedoch normalerweise nicht in vielen Zeilen angezeigt) oder um einen anderen Einzug (Tabulatoren oder Leerzeichen). Verwenden Sie einen Befehl, der Leerzeichen und Steuerzeichen in sichtbarer Form ausgibt, z
Sie können bestätigen, dass die Unterschiede nur mit Zeilenenden zu tun haben, indem Sie diese zuerst normalisieren. Möglicherweise haben Sie ein
dos2unix
Dienstprogramm. Wenn nicht, entfernen Sie das zusätzliche CR-Zeichen (^ M, \ r, \ 015) explizit:oder, wenn
file1
es das mit DOS-Endungen istquelle