Textvergleich (Diff)

Vergleicht zwei Textblöcke Zeile für Zeile und zeigt hinzugefügte und entfernte Zeilen farblich markiert an. Nützlich, um Änderungen an Konfigurationsdateien zu prüfen, Dokumente Korrektur zu lesen oder Code ohne Git zu überprüfen. Die gesamte Berechnung erfolgt im Browser; eingegebene Inhalte werden nie an einen Server gesendet.

Tipps

  • Füge die Vorher- und Nachher-Version einer Konfigurationsdatei (.env, YAML, JSON usw.) ein, um sofort zu sehen, welche Zeilen hinzugefügt oder entfernt wurden.
  • Auch ohne installiertes Git lässt sich allein durch Kopieren und Einfügen zweier Versionen ein einfaches Code-Review oder Korrekturlesen durchführen.
  • Eine Zeile, die einfach an eine andere Position verschoben wurde, wird als Entfernen plus Hinzufügen erkannt, nicht als "Verschieben" — das sollte man beim Lesen des Ergebnisses bedenken.
  • Leerzeichen, Zeilenumbrüche und Groß-/Kleinschreibung werden streng verglichen, sodass eine Zeile, die nur ihre Einrückung geändert hat, ebenfalls als geändert markiert wird.
  • Bei langen Texten hilft es, vor dem Einfügen jeden Absatz in eine eigene Zeile zu setzen, damit die Unterschiede pro Absatz auf einen Blick erkennbar sind.

Häufig gestellte Fragen

Es hilft dabei, zeilenweise Änderungen in Konfigurationsdateien oder Dokumenten zu erkennen, Code ohne Git zu überprüfen oder Änderungen in einem Vertrag oder in Nutzungsbedingungen nachzuvollziehen — überall dort, wo man sehen muss, was sich zwischen zwei Textversionen geändert hat.

Das CSV-Diff-Tool gleicht tabellarische Daten anhand einer Schlüsselspalte zeilenweise ab und vergleicht dann Zelle für Zelle. Dieses Tool vergleicht dagegen freien Text ohne Spaltenstruktur zeilenweise und eignet sich daher eher für Konfigurationsdateien oder Fließtext als für Tabellen.

Das JSON-Diff-Tool analysiert die Struktur von JSON (Objekte und Arrays) und vergleicht anhand von Schlüsseln. Dieses Tool analysiert keinerlei Struktur, sondern behandelt jede Zeile einfach als Zeichenkette und funktioniert daher mit beliebigem Text, nicht nur mit JSON.

Umsortierte Zeilen werden nicht als "Verschiebung" erkannt. Stattdessen erscheinen sie als Entfernen an der alten Position und Hinzufügen an der neuen Position. Das entspricht dem Verhalten von Gits diff-Befehl und den meisten zeilenbasierten Diff-Algorithmen.

Nein. Die gesamte Berechnung der Unterschiede läuft im JavaScript des Browsers ab, und der eingegebene Text wird nie an einen Server übertragen — die Nutzung ist daher auch bei vertraulichen Inhalten unbedenklich.
ツールくん

Übrigens – wie LCS (längste gemeinsame Teilsequenz) Textunterschiede berechnet

Der bekannteste Algorithmus zur Erkennung von Unterschieden zwischen zwei Texten ist der in den 1970er-Jahren vom IBM-Informatiker Eugene Myers veröffentlichte "Myers-Diff-Algorithmus". Der `diff`-Befehl großer Versionsverwaltungssysteme wie Git und SVN basiert auf dieser Algorithmenfamilie und erkennt effizient zeilenweise hinzugefügte und entfernte Inhalte. Auch dieses Tool folgt diesem Grundgedanken und berechnet die längste gemeinsame Teilsequenz (LCS), um das Ergebnis auf die minimal nötigen Änderungen zu reduzieren.

Die längste gemeinsame Teilsequenz (LCS) ist die längste Folge, die in gleicher Reihenfolge in beiden verglichenen Sequenzen vorkommt — hier die Folge der Zeilen. Der Unterschied zwischen zwei Texten ergibt sich, indem jede Zeile, die nicht Teil dieser LCS ist, als "entfernt" oder "hinzugefügt" gilt; je länger die LCS, desto weniger Änderungen werden angezeigt. Eine Technik namens dynamische Programmierung (DP) macht diese Berechnung auch bei sehr vielen Zeilen praktikabel.

Diff-Algorithmen haben eine bekannte Schwäche: Wenn eine Zeile lediglich an eine andere Position verschoben wird, erkennen die meisten Implementierungen dies nicht als "Verschiebung", sondern zeigen es als Entfernen zusammen mit einem Hinzufügen. Deshalb kann der Vergleich von Texten, deren Zeilenreihenfolge stark durcheinandergebracht wurde, mehr Unterschiede zeigen, als tatsächlich geändert wurde. Wer diese Eigenheit kennt, kann Diff-Ergebnisse besser einordnen.

→ Alle Wissenstexte ansehen