Dateivergleich - Problem mit Zeilenende \r 0D und \n 0A

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
mikdoe
Junior Member
Junior Member
Posts: 58
Joined: 2007-01-07, 13:11 UTC

Dateivergleich - Problem mit Zeilenende \r 0D und \n 0A

Post by *mikdoe »

Hi!

Ich nutze den TCMD häufig für Dateivergleiche.
Folgendes Szenario:
Vergleich lokal auf Windows mit Datei per FTP auf Linux.
Oben Haken "Binär" ist gesetzt.

Problem: auf Linux hat die Datei als Zeilenende nur \n 0A, lokal auf Windows hat sie \r\n 0D0A. Im Binärvergleich macht der TCMD zwar die beiden Punkte rot, zeigt aber keinen wirklichen Unterschied an.
Das ist ziemlich wenig hilfreich :roll:

Ich muss dann immer erst schauen wieviel Zeilen die Datei hat und wenn der Unterschied zwischen den Dateigrößen dem entspricht liegt es am Zeilenende.

Bei Dateien die mehr Unterschiede aufweisen als das Zeilenende funktioniert das natürlich nicht und ich bin im TCMD aufgeschmissen.

Kann das daran liegen, dass die FTP Datei temporär zwischengespeichert und somit die Windows Zeilenenden hat?
Kann ich da was machen oder ist das ein Bug?

Danke und Grüße
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

Die Frage ist, was ist der Ziel Deines Vergleiches?
Binär sind die Dateien unterschiedlich und das wird im Binärvergleich auch angezeigt. Bei FTP-Übertragung kann es sein, dass eine automatische Konvertierung zwischen Windows(CR/LF) <-> Unix(LF) erfolgt.
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
mikdoe
Junior Member
Junior Member
Posts: 58
Joined: 2007-01-07, 13:11 UTC

Post by *mikdoe »

Hi norfie²!

Danke für deine Antwort.
norfie² wrote:Die Frage ist, was ist der Ziel Deines Vergleiches?
Das Ziel ist, die Unterschiede zu finden. Dateigrößen sind unterschiedlich und TCMD soll mir anzeigen, warum das so ist.
norfie² wrote:Binär sind die Dateien unterschiedlich und das wird im Binärvergleich auch angezeigt.
Nein, wird es nicht. Schau mal auf diesem Screenshot: http://mikdoe.lima-city.de/binaervergleich.png

Unten ist die FTP Datei, oben die lokale. Die lokale hat eine Dateigröße von 8702, die FTP Datei ist 8371 groß. Und es sind exakt 331 Zeilen in der Datei.
norfie² wrote:Bei FTP-Übertragung kann es sein, dass eine automatische Konvertierung zwischen Windows(CR/LF) <-> Unix(LF) erfolgt.
Ist nicht relevant, weil die Datei auf dem Linux Server auch dort per Script erzeugt wurde. Die hat in ihrem Leben noch kein Windows und auch kein \r gesehen.
Die lokale Vergleichsdatei wurde ebenfalls mit einem Script erzeugt und da sie halt unterschiedliche Größen haben möchte ich ermitteln, woran das liegt. Denn es ist nicht immer nur das Zeilenende sondern kann auch andere Inhalte betreffen und es kostet mich einfach viel zu viel Zeit, immer erst auf Suche zu gehen, um dann am Ende voller Verzweiflung festzustellen * ACH MIST, der TCMD rafft ja die Zeilenenden nicht * :wink:

Grüße
User avatar
Dalai
Power Member
Power Member
Posts: 9387
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Warum vergleichst du Textdateien im Binärmodus? Nämest du den Haken dort raus, schreibt TC in die Statusleiste "0 Unterschiede gefunden", obwohl er das Vergleichsfenster öffnet, so dass man denken könnte, es gibt Unterschiede.

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

mikdoe wrote:
norfie² wrote:Die Frage ist, was ist der Ziel Deines Vergleiches?
Das Ziel ist, die Unterschiede zu finden. Dateigrößen sind unterschiedlich und TCMD soll mir anzeigen, warum das so ist.
Das zeigt Dir der Binärvergleich zuverlässig an.

mikdoe wrote:
norfie² wrote:Binär sind die Dateien unterschiedlich und das wird im Binärvergleich auch angezeigt.
Nein, wird es nicht. Schau mal auf diesem Screenshot: http://mikdoe.lima-city.de/binaervergleich.png
Nun die Dateien sind ja auch nicht unterschiedlich an dieser Stelle (aus Sicht des Binärvergleichs).
mikdoe wrote:Unten ist die FTP Datei, oben die lokale.
Beide sind zum Zeitpunkt des Binärvergleichs lokal - die eine auf C:, die andere auf D:.
mikdoe wrote:
norfie² wrote:Bei FTP-Übertragung kann es sein, dass eine automatische Konvertierung zwischen Windows(CR/LF) <-> Unix(LF) erfolgt.
Ist nicht relevant, weil ...
Aber sicher ist das relevant. Irgendwie muss die Datei von Linux nach Windows kommen und das geschieht lt. Deiner Aussage via FTP. TCmd überträgt also via FTP die Datei zwecks Vergleichs nach Windows. Diese Übertragung löst je nach FTP-Einstellung eine CRLF-Konvertierung aus.

Du hast mehrere Möglichkeiten:
1. CRLF-Konvertierung beim FTP durchführen lassen und im Binärvergleich die Unterschiede anzeigen lassen. Falls keine Unterschiede gefunden werden, dann resultieren die Größenunterschiede Linux/Windows allein aus dem CRLF-Problem.
2. CRLF-Konvertierung beim FTP durch erzwungene FTP-Binärübertragung unterdrücken. Der Binärvergleich liefert dann die CRLF-Unterschiede als Unterschied. Ein Textvergleich unterdrückt CRLF-Unterschiede (und je nach Einstellung werden noch mehr Unterschiede unterdrückt).
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
mikdoe
Junior Member
Junior Member
Posts: 58
Joined: 2007-01-07, 13:11 UTC

Post by *mikdoe »

Danke euch.
Aber eine Lösung sehe ich in euren Antworten nicht. Wenn ich eine lokale Datei auf Win mit \r\n als Zeilentrenner mit einer FTP Datei mit \n als Zeilentrenner vergleiche, müssen die Zeilentrenner m. E. als Unterschied gezeigt werden.

Aber wenn ich damit der einzige bin muss ich mir eine andere Lösung suchen.

Grüße
User avatar
Dalai
Power Member
Power Member
Posts: 9387
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

mikdoe wrote:Aber eine Lösung sehe ich in euren Antworten nicht. Wenn ich eine lokale Datei auf Win mit \r\n als Zeilentrenner mit einer FTP Datei mit \n als Zeilentrenner vergleiche, müssen die Zeilentrenner m. E. als Unterschied gezeigt werden.
Aber nur dann, wenn die Übertragung via FTP die Zeilenenden nicht ändert. Oder anders ausgedrückt: Es kann durchaus sein, dass die Dateien nach der FTP-Übertragung keine \n sondern \r\n haben. Der Modus Text ändert die Zeilenenden, Binär nicht.

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

2mikdoe
Wenn ich eine lokale Datei auf Win mit \r\n als Zeilentrenner mit einer FTP Datei mit \n als Zeilentrenner vergleiche, müssen die Zeilentrenner m. E. als Unterschied gezeigt werden.
Dazu passt wie die Faust aufs Auge mein 2. Lösungsvorschlag. Allerdings stellt sich mir die Frage, warum ich bekannte Unterschiede nochmals aufgetischt haben möchte, wenn mich doch nur die anderen Unterschiede wirklich interessieren. Aber das ist ja nicht mein Problem. Jeder macht sich selbst das Leben so schwer, wie er es haben möchte. :mrgreen:
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
Post Reply