Dateien - Vergleich nach Inhalt

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
deus-ex
Power Member
Power Member
Posts: 982
Joined: 2003-02-10, 17:45 UTC

Dateien - Vergleich nach Inhalt

Post by *deus-ex »

2ghisler(author)

Grüß dich, Christian.
Im "Inhalt-Vergleichen"-Fenster gibt es die Auswahlmöglichkeiten Gross-/Kleinschreibung beachten und Binär.
Bitte baue für die Auswahl Binär auch einen Shortcut ein. Dabei wäre es von Vorteil, das die Vergleichen-Aktion
sofort durchgeführt wird, sobald ich Binär an-/abwähle. Zurzeit muß man nochmals Vergleichen anwählen.

Eine Auswahl, um zwischen vertikaler und horizontaler Darstellung zu wechseln (z. Z. nur .ini-Eintrag), wäre super.
___________________________________________________________________________________________

In wie fern werden beim Vergleich speziell von Textdateien diese synchronisiert? Sprich, in welcher Blockgröße
werden die Dateien gegeneinander verglichen? Ich erlebe bei Textdateivergleichen oft, das obwohl in einer
Dateiversion nur ein Block von aufeinander folgenden Zeilen fehlt, der Vergleich dies so nicht wiedergibt.
D.h., nach dem fehlenden Textstück sind beide Dateiversionen identisch, aber der Vergleich gerät da oft aus
dem Tritt und erkennt ab dem fehlenden Textblock nur noch Unterschiede bis zum Dateiende.


Ich habe aus seeligen DOS-Tagen ein Programm (Tadzio's File Compare) welches das folgendermaßen angeht:
Option: Sync scan +500 Zeilen.
Wenn TFC zwei unterschiedliche Zeilen findet, wird vermutet, das einige Zeilen in einer der Dateien
ergänzt/entfernt wurden, und das übereintreffende Zeilen weiter unten in der Datei folgen.
Grundeinstellung ist, alle 100 Zeilen zu resynchronisieren. Für Dateien mit mehr als 100 Zeilen ist
diese Option hilfreich, verlangsamt aber den Vergleichsprozess.
Was denkst du darüber...? :)
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50567
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Die Resynchronisierung ist eine Wissenschaft fuer sich. TC berechnet für jede Zeile einen Hashwert (CRC32 oder ähnlich) und vergleicht dann diese miteinander. Bei Nicht-Uebereinstimmung sucht er die nächste Uebereinstimmung ab der aktuellen Zeile, und nimmt die mit dem kleinsten quadratischen Abstand (links^2 + rechts^2). Allerdings wird nur dann eine Uebeeinstimmung erkannt, wenn mindestens 3 Zeilen uebereinstimmen, damit ein { oder begin einer fremden eingeschobenen Funktion nicht als Uebereinstimmung gefunden wird.
Ich erlebe bei Textdateivergleichen oft, das obwohl in einer Dateiversion nur ein Block von aufeinander folgenden Zeilen fehlt, der Vergleich dies so nicht wiedergibt.
Bitte mal ein Beispiel per e-mail schicken (max. 200k), das sollte eigentlich nicht passieren, wenn die Zeilen wirklich zu 100% übereinstimmen...
Author of Total Commander
https://www.ghisler.com
User avatar
Hacker
Moderator
Moderator
Posts: 13142
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

deus-ex,
Bitte baue für die Auswahl Binär auch einen Shortcut ein.

Da ist was merkwurdiges mit dem String 5851 im Gange. TC beachtet den '&' nicht und wenn man eine Datei wie

Code: Select all

Test
1146="Add current dir"
1147="Remove current dir"
1148="Configure..."
6271="Clos&e"
als .lng benutzt dann erscheint "Binary" uberhaupt nicht mehr.


Eine Auswahl, um zwischen vertikaler und horizontaler Darstellung zu wechseln (z. Z. nur .ini-Eintrag), wäre super.

Das ist doch der Button gleich links neben Gross-/Kleinschreibung beachten und Binar. Oder habe ich dich da missverstanden?

HTH
Roman
User avatar
deus-ex
Power Member
Power Member
Posts: 982
Joined: 2003-02-10, 17:45 UTC

Post by *deus-ex »

Hacker
Das ist doch der Button gleich links neben Gross-/Kleinschreibung beachten und Binar. Oder habe ich dich da missverstanden?
Stimmt! Irgendwie habe ich das Icon dieses Buttons nicht mit der Funktion Veritkal/Horizontal in Verbindung gebracht
und den Button somit schlichtweg ignoriert. Dabei bin ich sicher, in der Vergangenheit den Button aus Neugier schon
mal gedrückt zu haben... :oops:

Da wäre es prima, wenn dieser Button ebenso einen Shorcut bekäme. :D

ghisler(Author)
Bitte mal ein Beispiel per e-mail schicken (max. 200k), das sollte eigentlich nicht passieren, wenn die Zeilen wirklich zu 100% übereinstimmen...
Ok, das nächste Beispiel, über das ich stolpere, schicke ich mit entsprechendem Hinweis. :)
User avatar
deus-ex
Power Member
Power Member
Posts: 982
Joined: 2003-02-10, 17:45 UTC

Post by *deus-ex »

2ghisler(Author)

Ok, habe ein Beispiel per e-mail geschickt.
User avatar
tom*de
Senior Member
Senior Member
Posts: 394
Joined: 2003-02-25, 09:21 UTC

Frage zu cm_CompareFilesByContent (File comparison)

Post by *tom*de »

Der Thread hier ist zwar uralt aber ich versuchs trotzdem mal:

Es sollen 2 Dateien nach Inhalt verglichen werden und jeweils nicht vorhanden Zeilen markiert/ausgegeben werden. Dabei sollen ungleiche Zeilen sozusagen als nicht vorhanden gelten.

Bsp.:

Datei (1) enthält 4 Zeilen:

YC005Y8
YC00802
YC00808
YC00810

Datei (2) enthält 7 Zeilen:

YC005Y8
YC005Z1
YC005Z2
YC005Z3
YC005ZZ
YC00808
YC00810

Der Dateivergleich cm_CompareFilesByContent (File comparison) liefert nun für die beiden ersten Zeilen Übereinstimmung.
In den Zeilen 2 ist links(1) "802" markiert und rechts(2) "5Z1".
Dann folgen in (1) 3 leerzeilen und in (2) 3 rot markierte.
Zeile 3 u. 4 aus (1) entsprechen dann wieder 6 und 7 aus (2)

Kann ich irgendwie das Verhalten für Zeile 2 ändern, so daß der Vergleich für die Zeile YC005Z1 in (2) auch eine Leerzeile in (1) und für die Zeile YC00802 in (1) eine Leerzeile in (2) erzeugt.
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
User avatar
SanskritFritz
Power Member
Power Member
Posts: 3693
Joined: 2003-07-24, 09:25 UTC
Location: Budapest, Hungary

Post by *SanskritFritz »

2tom*de
Sowas kannst du soweit ich weiss nur in Beyond Compare machen, du kannst die zeilen manuell isolieren. Obs automatisch geht, weiss ich nicht, ich habe im moment kein BC installiert. :-( Schau mal nach, vielleicht gehts auch in WinMerge.
I switched to Linux, bye and thanks for all the fish!
User avatar
tom*de
Senior Member
Senior Member
Posts: 394
Joined: 2003-02-25, 09:21 UTC

Post by *tom*de »

eine Möglichkeit habe ich unter AIX gefunden:

diff 1 2 liefert prima die Unterschiede:

2c2,5
< YC00802
---
> YC005Z1
> YC005Z2
> YC005Z3
> YC005ZZ

Mit grep bekomm ich nun schnell die unterschiedlichen Zeilen für jede Datei:
diff -i 1 2 | grep "^<" > Zeilen_nur_in_1
diff -i 1 2 | grep "^>" > Zeilen_nur_in_2

:)

Mit WinMerge hab ich das leider nicht hinbekommen - Hätte es irgendwo in einem Menü - Zeige nur Unterschiede, Zeige nur Übereinstimmungen, zeige alles an - vermutet.
weiß jemand Rat?
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
DoubleT
Member
Member
Posts: 163
Joined: 2003-11-22, 02:21 UTC
Location: Germany

Post by *DoubleT »

Mir ist nicht ganz klar, welche Art Rat du haben möchtest, aber ich versuche es mal...
  • Besorge dir diff und grep bei Cygwin.
  • Versuch es mit Araxis Merge. Das kann Zeilenweise vergleichen.
Es wäre natürlich schon nett, wenn das TC-Compare das optional auch könnte.
#5576 Personal licence
#155652 Commercial licence

Planung bedeutet, den Zufall durch den Irrtum zu ersetzten.
User avatar
tom*de
Senior Member
Senior Member
Posts: 394
Joined: 2003-02-25, 09:21 UTC

Post by *tom*de »

Danke DoubleT das mit cygwin ist ne gute Idee.

Ich finde den Algorithmus von (cm_CompareFilesByContent (File comparison)) schon recht gut und hilfreich.

Wie wärs noch mit neuen 2 Optionen?
[ ] zeige nur unterschiedliche Zeilen
[ ] zeige nur identische zeilen

ggf. mit einer dritten neuen Option [ ] die ganzen Zeilen
(z.B.: AAA <-> AAAB)
als unterschiedlich anzuzeigen. (und nicht nur das B rot zu markieren) Und das Anzeigeergebnis irgendwie speichern zu können.

(wahrscheinlich ist wie bei o.g. Verwendung des diff vorher ein sort der 2 Dateien notwendig...(?))

Tom*
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
Post Reply