ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

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:

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.

Grafische Oberflächen

Unter anderem sind die folgenden Programme in den Ubuntu-Quellen enthalten [1]:

Vergleich-Übersicht
Name Paketname kurze Beschreibung
Diffuse {de} diffuse (universe) für GNOME, unterstützt Syntaxhervorhebung, siehe Wiki-Artikel diffuse
Meld {en} meld (universe) für GNOME, siehe Wiki-Artikel Meld
Kompare {en} kompare (ab Ubuntu 12.10 universe) für KDE4, kann "nur" zwei Dateien vergleichen, rekursiver Vergleich von Verzeichnissen möglich
TkDiff {en} tkdiff (universe) Grafische Oberfläche für diff, Unterstützt wird dabei bis jetzt CVS, RCS und SCCS
gvimdiff {en} vim-gtk (universe) grafisches VIM mit entsprechend gesetzten Diffoptionen
XXDiff {en} xxdiff (universe) siehe Wiki-Artikel 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.

#allgemein
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 quasi das Standardprogramm auf der Kommandozeile zum Vergleichen des Inhalts von zwei Dateien. diff ist Teil der GNU Utilities, es ist in jeder Ubuntu- (bzw. Linux-)Installation enthalten. Die allgemeine Syntax lautet [2]:

diff [OPTIONEN] Datei1 Datei2 

wobei diff auch in der Lage ist, komplette Verzeichnisse rekursiv zu vergleichen (Option -r), dann gibt man anstatt von Dateinamen Verzeichnisse an.

Ohne Angabe von Optionen gibt diff einfach nur die Zeilen aus, die sich Unterscheiden, alle gleichen Zeilen werden nicht gezeigt. Ausführlicher ist die Anzeige, wenn man die Option -y verwendet, dann erfolgt die Ausgabe tabellarisch, es werden auch alle Zeilen angezeigt, die gleiche sind. Ungleiche Zeilen werden markiert.

Möchte man einfach nur wissen, ob der Inhalt der Dateien gleich ist, so ruft man diff mit der Option -q auf. Als Ausgabe erhält man nur die Rückmeldungen, ob die Dateien verschieden sind oder nicht, die Unterschiede werden nicht angezeigt.

diff kennt noch eine Vielzahl von weiteren Optionen wie bestimmte (Steuer-)Zeichen in einer Datei ignorieren oder beim Vergleichen von Verzeichnissen Dateien zu ignorieren, die einem vorzugebenden Muster entsprechen. Informationen hierzu findet man in den Manpages oder wenn man diff ohne Angaben von Dateinamen nur mit der Option --help aufruft.

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 {en} 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

  • colordiff (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install colordiff 

sudo aptitude install colordiff 

nachinstalliert werden [1].

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 Ascii-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.

ubuntuusers.local › WikiTextdateien vergleichen