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, 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 🇬🇧 |
kdiff3 🇬🇧 | kdiff3 (universe) | Grafischer Textdifferenzanalysator für bis zu 3 Eingabedateien, der eine Zeichen-für-Zeichen-Analyse und ein Textzusammenführungswerkzeug mit integriertem Editor bietet. Es kann auch Verzeichnisse vergleichen und zusammenführen. Plattform-unabhängig. (Veraltete Projektseite auf Sourceforge: kdiff3 🇬🇧) |
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
colordiff (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install colordiff
Oder mit apturl installieren, Link: apt://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
icdiff (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install icdiff
Oder mit apturl installieren, Link: apt://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
.
Links¶
Beyond Compare 🇬🇧 - kommerzielles Programm
Programmierung Werkzeuge für Entwickler