Textdateien vergleichen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Grafische Oberflächen
  2. Kommandozeile
    1. comm
    2. diff
    3. colordiff
    4. icdiff
    5. cmp
    6. vimdiff
  3. Links

Programme zum Vergleichen von Textdateien gehören zum Handwerkszeug eines jeden Programmierers, wäre diese Aufgabe doch ohne die kleinen Helferlein ungleich mühsamer. Hauptanwendung ist normalerweise das Vergleichen zweier Versionen einer Quelltext- oder Konfigurationsdatei. Es können aber natürlich alle Arten von Textdateien verglichen werden. Einige Programme können auch drei Dateien vergleichen.

Besagte Programme gibt es sowohl für die Kommandozeile als auch mit grafischen Oberflächen. Besonders letztere heben die Unterschiede zwischen den Dateien oft farbig hervor. Weiterhin gibt es oft die Möglichkeit, die beiden Dateien zusammenzuführen oder auch einen Patch zu erstellen, beispielsweise mittels patch.

Es besteht auch die Möglichkeit, Vergleichswerkzeuge im Dateimanager zu integrieren (z.B. bei Nautilus (Abschnitt „Erweiterungen“)).

Grafische Oberflächen

Unter anderem sind die folgenden Programme in den offiziellen Paketquellen enthalten [1]:

Vergleich-Übersicht
Name Paketname kurze Beschreibung
diffuse diffuse (universe) für GNOME, unterstützt Syntaxhervorhebung, siehe auch Diffuse 🇩🇪
Meld meld (universe) für GNOME, siehe auch Meld 🇬🇧
Kompare kompare (universe) für KDE4, kann "nur" zwei Dateien vergleichen, rekursiver Vergleich von Verzeichnissen möglich
tkdiff 🇬🇧 tkdiff (universe) Grafische Oberfläche für diff, Unterstützt wird dabei CVS, RCS und SCCS
gvimdiff 🇬🇧 vim-gtk (universe) grafisches VIM mit entsprechend gesetzten Diffoptionen
xxdiff xxdiff (universe) siehe auch xxdiff 🇬🇧

Kommandozeile

comm

Mit comm kann man zeilenweise sortierte Dateien vergleichen. Das von Richard Stallman und David MacKenzie geschriebene Programm gehört zu den GNU-Standard-Werkzeugen.

comm [OPTIONEN] DATEI1 DATEI2 

Beispiel:

comm -1 -3 ~/text1 ~/text2 

Ohne die Angabe von Optionen wird eine Ausgabe mit drei Spalten erzeugt. Die erste Spalte enthält Einträge, die nur in der ersten Datei vorkommen, die zweite Spalte enthält die Einträge, die nur in der zweiten Datei existieren und die dritte Zeile enthält die Zeilen, die in beiden Dateien zu finden sind. Die ersten beiden Spalten enthalten also "einzigartige" Zeilen einer Datei, die dritte Spalte hingegen "gleiche" Zeilen aus beiden Dateien.

Jede der drei Spalten kann über die folgenden Optionen in der Ausgabe unterdrückt werden:

Option Wirkung
-1 unterdrückt einzigartige Zeilen aus DATEI1
-2 unterdrückt einzigartige Zeilen aus DATEI2
-3 unterdrückt gleiche Zeilen beider Dateien

diff

diff ist das Standardprogramm auf der Kommandozeile zum Vergleichen des Inhalts von zwei Dateien. Näheres dazu steht im Wikiartikel diff.

diff3

diff3 kann den Inhalt von drei Dateien gleichzeitig vergleichen. diff3 ist, ebenso wie diff, Teil der GNU Utilities. Die allgemeine Syntax lautet:

diff3 [Optionen] Datei1 Datei2 Datei3 

Anders, als der Namen es vermuten lässt, kennt diff3 deutlich weniger und andere Optionen als diff, außerdem ist die Ausgabe anders strukturiert. Eine Übersicht erhält man in den Manpages oder wenn man diff3 ohne Angaben von Dateinamen nur mit der Option --help aufruft.

colordiff

colordiff 🇬🇧 ist eine erweiterte Varianten von diff, bei der die Ausgabe der Unterschiede farblich hervorgehoben wird, was besonders bei größeren Dateien die Lesbarkeit erhöht. Die Syntax von colordiff ist identisch mit der von diff.

Das Programm ist nicht in der Standardinstallation enthalten, kann aber über das Paket

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install colordiff 

sudo aptitude install colordiff 

nachinstalliert werden [1].

icdiff

icdiff 🇬🇧 hebt die Unterschiede auch farblich hervor, wie bei colordiff, stellt die Unterschiede jedoch im Kontext und nebeneinander dar. Es ist besonders dann hilfreich, wenn man kleine Änderungen finden möchte.

Das Programm ist nicht in der Standardinstallation enthalten, kann aber über das Paket

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install icdiff 

sudo aptitude install icdiff 

nachinstalliert werden.

cmp

cmp ist Teil des diff Paketes und somit genau wie diff bei Ubuntu bereits standardmäßig installiert. Im Gegensatz zu diff zeigt cmp, ab dem wievielten Byte sich zwei Dateien voneinander unterscheiden, und ist somit zum Beispiel nützlich, um Binär-Dateien zu vergleichen.

Die Syntax von cmp ist:

cmp [datei1] [datei2] 

Einige nützliche Parameter sind -b, welcher den ASCII-Code und das Zeichen des ersten sich unterscheidenden Bytes in der Datei anzeigt, und -l, welches den Code sämtlicher sich unterscheidender Bytes anzeigt. Wenn man beide Parameter zusammen benutzt, bekommt man eine Liste mit allen sich unterscheidenden Bytes, ihrer Stelle innerhalb der Datei, ihrem ASCII-Code und ihrem eigentlichen Zeichen.

Beispiel:

cat datei1 

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

cat datei2 

Lorem Gabel dolor sit amet, consectetuer adipiscing elit.

cmp datei1 datei2 

datei1 datei2 differieren: Byte 7, Zeile 1.

cmp -b datei1 datei2 

datei1 datei2 differieren: Zeichen 7, Zeile 1 ist 151 i 107 G

cmp -l datei1 datei2 

 7 151 107
 8 160 141
 9 163 142
10 165 145
11 155 154

cmp -l -b datei1 datei2 

 7 151 i    107 G
 8 160 p    141 a
 9 163 s    142 b
10 165 u    145 e
11 155 m    154 l

vimdiff

vimdiff ist ein Kurzbefehl, um VIM mit entsprechenden Einstellungen zum Vergleichen von bis zu vier Dateien zu starten.

Die Syntax von vimdiff ist:

vimdiff [Optionen] [Datei1] [Datei2] [Datei3] [Datei4] 

Oder analog:

vim -d [Optionen] [Datei1] [Datei2] [Datei3] [Datei4] 

Die GUI-Variante von VIM kann mit gvim... bzw. der Option -g gestartet werden.

Folgende Einstellungen werden für das aktuelle Fenster (lokal) gesetzt:

VIM-Einstellungen für vimdiff
Einstellung Wert
diff on
scrollbind on
cursorbind on
scrollopt += hor
wrap off
foldmethod diff
foldcolumn 2 (oder Wert von diffopt)

Mit :diffoff kann der "Diffmodus" beendet werden (Einstellungen werden nicht auf vorherige Werte zurückgesetzt).

Die verschiedenen Kommandos wie :diffupdate (Diff aktualisieren, Folds anpassen), :diffget, :diffput und Weitere finden sich in der Dokumentation unter :help diff.