2010-10-17 10 views
5

Stellen Sie sich vor Sie haben 2 Texfiles (sagen wir 500kB - 3 MB groß): Das erste ist original, das zweite ist das Update dieses Originals. Wie kann ich herausfinden, was geändert (eingefügt, gelöscht) wurde und wo die Änderungen stattfanden (in der Update-Datei im Vergleich zum Original)?Vergleich von 2 Textdateien: Was und wo wurden Änderungen vorgenommen?

  1. Gibt es irgendwo ein Werkzeug oder eine Bibliothek?
  2. Gibt es diese Funktion in allen bekannten Texteditoren?
  3. Kennt jemand einen Algorithmus? Oder was sind die üblichen Methoden, um es im großen Maßstab zu lösen?
  4. Was würden Sie tun, wenn Sie sich mit dieser Art von Problem konfrontiert sehen?

Danke für Ihre Ideen ...

+0

souregear's DiffMerge ist frei ... –

+0

@Mitch Wheat - Thanx, sieht gut aus ... – lyborko

Antwort

1

Sie können Notepad++ versuchen, es ist ein Open-Source-Texteditor, der eine Datei in Plug vergleichen hat.

2

Was Sie beschreiben genau, klingen wie ein diff -Stil-Werkzeug. Diese Art von Funktionalität ist in vielen der fortgeschritteneren Texteditoren verfügbar.

+0

Eine Weile nach Ihre Antwort Ich fand heraus, dass zumindest Open Office diese Funktion hat ... Danke ... – lyborko

1

Es gibt eine extensive list of file comparison tools auf Wikipedia.

Wenn Sie es programmatisch machen wollen, habe ich vorher SED und AWK auf Unix-Systemen verwendet - und es gibt Windows-Versionen. Grundsätzlich ermöglichen diese Arten von Dateiverarbeitungssprachen das Lesen und Vergleichen von Textdateien auf einer Zeile-für-Zeile-Basis und erlauben Ihnen dann, etwas mit den Unterschieden zu tun (zum Beispiel, sie in einer dritten Datei zu speichern).

+0

Vielen Dank für die oben genannten Links. Ich habe versucht, dieses kleine Werkzeug selbst zu entwickeln, aber es schien mir ziemlich schwierig, das zu erfinden, was vor langer Zeit erfunden wurde ... Ich bin mir jetzt nicht sicher, ob ich es selbst in der Anwendung implementiere oder jedes Mal ein Vergleichswerkzeug verwende . – lyborko

0

Gibt es irgendwo ein Werkzeug oder eine Bibliothek?

Es gibt viele. Versuchen Sie es mit diff, es ist ein Befehlszeilen-basiertes Dateivergleichsprogramm, das für kleine Diffs funktioniert. Aber wenn die zwei Dateien sehr unterschiedlich sind, wird es schwierig sein, die Ausgabe von diff zu verstehen. In diesem Fall können Sie visuelle Dateivergleichswerkzeuge wie diffmerge, Kompare oder vimdiff verwenden.

Gibt es diese Funktion in allen bekannten Texteditoren?

Viele moderne Editoren wie Vim, haben Eklipse diese visuelle diffing Funktion ..

Kennt jemand einen Algorithmus? Oder was sind die üblichen Methoden, um es im großen Maßstab zu lösen?

Es basiert auf der Longest common subsequence algorithm, im Volksmund als LCS bekannt.

LCS alten Text und neuen Text gibt den Teil, der unverändert geblieben ist. Die Teile von altem Text, die nicht Teil von LCS sind, werden also geändert.

Was würden Sie tun, wenn Sie mit dieser Art von Problem konfrontiert werden?

Ich würde eines der genannten visuellen Diff-Tools verwenden, um zu sehen, wo und wo die Änderungen vorgenommen wurden.

Verwandte Themen