Zum Inhalt springen
Quaestio

Texte vergleichen

Fügen Sie das Original und die geänderte Fassung ein, dann wird jeder Unterschied hervorgehoben, bis hin zu einzelnen Wörtern.

Fügen Sie in beide Felder Text ein, um sie zu vergleichen.

Einbetten

Werkzeug auf Ihrer Website einbetten

Kopieren Sie den Code und fügen Sie ihn dort ein, wo das Werkzeug erscheinen soll, etwa in einem Blogbeitrag oder auf einer Schulseite. Es ist kostenlos, der Rahmen enthält keine Werbung, und das Werkzeug rechnet im Browser der Besucher.

So funktioniert es

Der Vergleich sucht die kürzeste Folge hinzugefügter und entfernter Zeilen, die den einen Text in den anderen überführt, mit dem Algorithmus von Eugene Myers aus dem Jahr 1986. Dasselbe Verfahren verwendet git standardmäßig. Geänderte Zeilen werden anschließend Wort für Wort verglichen, damit Sie genau sehen, was sich unterscheidet.

Hinzugefügte Zeilen haben einen grünen Hintergrund, entfernte einen roten. Eine geänderte Zeile zählt als eine entfernte und eine hinzugefügte, wie in anderen Diff-Werkzeugen auch.

Groß-/Kleinschreibung ignorieren behandelt Hallo und hallo als gleich. Leerraum ignorieren übergeht Leerzeichen am Anfang und Ende einer Zeile sowie mehrere Leerzeichen hintereinander, was hilft, wenn sich die Einrückung geändert hat.

Unified Diff ist das Textformat, das diff -u ausgibt, mit drei Zeilen Kontext um jede Änderung. Es lässt sich in einen Fehlerbericht einfügen oder von patch und git apply einlesen.

Ihre Texte verlassen nie Ihren Browser. Sehr lange Texte, die sich fast vollständig unterscheiden, werden nicht Zeile für Zeile verglichen; dann werden alle Zeilen als geändert angezeigt.

So vergleicht das Werkzeug

Zuerst werden gleiche Zeilen am Anfang und am Ende beiseitegelegt, weil sie zu keiner Änderung gehören können. Dazwischen findet der Algorithmus von Myers die kürzeste Folge entfernter und hinzugefügter Zeilen. Zeilenenden als CR LF oder als einzelnes CR werden vorher zu LF, derselbe Text aus Windows und vom Mac gilt also als gleich. Innerhalb einer Änderung stehen entfernte Zeilen vor hinzugefügten, und sie werden der Reihe nach für den Vergleich Wort für Wort gepaart. Wörter werden an Leerzeichen und Satzzeichen getrennt, ein geändertes Komma wird also für sich markiert.

Rechenbeispiel

Vergleichen Sie die Zeilen Apfel, Birne, Kirsche mit Apfel, Birne Helene, Kirsche, Dattel, beide mit einem Zeilenumbruch nach der letzten Zeile. Der Algorithmus behält Apfel und Kirsche, entfernt Birne und fügt Birne Helene und Dattel hinzu: zwei Zeilen hinzugefügt und eine entfernt. Die Zeile Birne Helene wird mit Birne gepaart, und nur das Wort Helene mit dem Leerzeichen davor wird als neu markiert. Im Unified Diff ist das ein einziger Abschnitt mit der Überschrift @@ -1,3 +1,4 @@: Er beginnt in beiden Texten bei Zeile 1 und umfasst drei Zeilen des alten und vier des neuen Textes.

Fehlt der Zeilenumbruch nach der letzten Zeile, ändert sich das Ergebnis. Nach GNU Diffutils ist eine letzte Zeile ohne Zeilenumbruch nicht gleich derselben Zeile mit Zeilenumbruch, und Kirsche war nur im alten Text die letzte Zeile. Das Werkzeug zeigt Kirsche dann als entfernt und hinzugefügt, drei Zeilen hinzugefügt und zwei entfernt, und schreibt wie diff -u nach der letzten Zeile jedes Textes \ No newline at end of file. Nebeneinander und einspaltig trägt die entfernte Zeile Kirsche den Hinweis „kein Zeilenumbruch am Ende“, weil sie sonst unverändert aussähe. Leerraum ignorieren übergeht den Unterschied.

Grenzen

Die Arbeit ist auf Zeilenebene auf 4000 Änderungen begrenzt. Zwei Texte mit je 2001 völlig verschiedenen Zeilen überschreiten die Grenze, und alle Zeilen erscheinen dann ohne Vergleich als entfernt und hinzugefügt. Auf Wortebene liegt die Grenze bei 2000 Änderungen pro Zeilenpaar, und haben sich mehr als 80 % der Zeichen geändert, wird die Zeile als Ganzes gezeigt, ohne Markierung einzelner Wörter.

Was nicht zu sehen ist

Verschobene Blöcke werden nicht erkannt, weil der Algorithmus nur Entfernen und Hinzufügen kennt. Verschieben Sie die ersten beiden Zeilen eines Textes mit fünf Zeilen bis vor die letzte, zeigt das Werkzeug zwei Zeilen als entfernt und zwei als hinzugefügt. Leerraum ignorieren fasst Leerzeichen innerhalb einer Zeile zusammen, entfernt sie aber nicht: a,b und a, b gelten weiterhin als verschieden.

Quellen

So werden die Werkzeuge geprüft