GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So vergleichen Sie drei Dateien in Linux mit dem diff3-Tool

In einem unserer früheren Tutorials haben wir ein Linux-Befehlszeilenprogramm namens diff besprochen, mit dem Sie zwei Dateien Zeile für Zeile vergleichen können. Was aber, wenn nicht zwei, sondern drei Dateien verglichen werden sollen? Ja, dafür gibt es auch ein Linux-Befehlszeilendienstprogramm, das passenderweise diff3 heißt .

Wenn Sie nach einem solchen Tool gesucht haben, dann suchen Sie nicht weiter, denn in diesem Tutorial erklären wir die Verwendung von diff3 anhand leicht verständlicher Beispiele.

But before we move forward, we would like you to know that all the examples mentioned in this tutorial have been tested on Ubuntu 14.04 with bash version 4.3.11(1), and the version of diff3 that we've used is 3.3.

Installieren Sie diff3

Das diff3-Tool wird wahrscheinlich standardmäßig auf Ihrem System installiert – zumindest auf Ubuntu. Aber wenn das nicht der Fall ist, machen Sie sich keine Sorgen, da Sie dies ganz einfach tun können, indem Sie das GNU Diffutils-Paket installieren. Anweisungen zum Herunterladen und Installieren des Pakets auf Ihrem System finden Sie hier.

Diff3-Nutzung

Da das Dienstprogramm diff3 drei Dateien vergleicht, müssen wir für unsere Verwendungsbeispiele drei Dateien nehmen, die wir als Eingabe an das Tool übergeben.

Hier ist die Datei1:

This is line1 with some change
This is line2
This is line3

Hier ist die Datei2:

This is line1
This is line2
This is line3

Und hier ist die Datei3:

This is line1
This is line2
This is line3

Wenn wir den Inhalt dieser drei Dateien sehen, ist die einzige Änderung eindeutig in der ersten Zeile der ersten Datei. Sehen wir uns nun an, wie diff3 diese Änderung meldet.

So können wir in diesem Fall diff3 verwenden:

diff3 file1 file2 file3

Und hier ist die Ausgabe, die es erzeugt:

====1
1:1c
This is line1 with some change
2:1c
3:1c
This is line1

Sie können die Ausgabe folgendermaßen verstehen:

  • Die erste Zeile, die mit vier '='-Zeichen beginnt und mit der Zahl '1' endet, besagt, dass sich die Änderung in der ersten Datei befindet.
  • In der nächsten Zeile bedeutet die erste '1' file1; das '1c' nach dem Doppelpunkt 'bedeutet, dass die erste Zeile enthält'. Die aktuelle Zeile wird in der nächsten Zeile der Ausgabe angezeigt.
  • In ähnlicher Weise bedeuten 2:1c und 3:1c 'die erste Zeile von Datei2 und Datei3 enthalten'. Und da der Inhalt der Zeile in beiden Dateien gleich ist, wird die eigentliche Zeile nur einmal am Ende der Ausgabe angezeigt.

Nehmen wir zur Verdeutlichung einen anderen Fall, in dem die Änderung in Datei3 erfolgt.

Hier ist die Datei1:

This is line1
This is line2
This is line3

Hier ist die Datei2:

This is line1
This is line2
This is line3

Und hier ist die Datei3:

This is line1 with some change
This is line2
This is line3

Der Befehl bleibt gleich:

diff3 file1 file2 file3

Und hier ist die Ausgabe:

====3
1:1c
2:1c
This is line1
3:1c
This is line1 with some change

Die Ausgabe kann in diesem Fall also wie folgt verstanden werden:

  • Die Änderung befindet sich in Datei3
  • Sowohl file1 als auch file2 enthalten "This is line1" als erste Zeile
  • Während die Datei3 als erste Zeile "Dies ist Zeile1 mit einigen Änderungen" enthält.

Das war alles darüber, wie sich diff3-Berichte in Zeilen ändern. Sehen wir uns nun an, wie sich diff3 verhält, wenn eine der Dateien eine zusätzliche Zeile enthält:

Während file1 und file2 gleich bleiben, hier ist file3:

This is line1
This is line2
This is line3
This is line4

Wie aus seinem Inhalt hervorgeht, enthält file3 nun eine zusätzliche Zeile am Ende.

Lassen Sie uns denselben diff3-Befehl ausführen:

diff3 file1 file2 file3

Und hier ist die Ausgabe, die der Befehl erzeugt:

====3
1:3a
2:3a
3:4c
This is line4

Die Ausgabe beginnt mit der Aussage, dass die Änderung in der Datei 3 ist. Die Änderung befindet sich in der vierten Zeile von Datei 3 (3:4c), die im Vergleich zu Datei 1 und Datei 2 insgesamt eine neue Zeile ist.

Was wir bisher besprochen haben, waren einige einfache Fälle. Nehmen wir ein paar etwas komplexe Situationen. Stellen Sie sich beispielsweise vor, dass file1, file2 und file3 Folgendes enthalten:

This is line1
This is line2 with some change
This is line3
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3 with some change

Jetzt enthalten also sowohl Datei1 als auch Datei2 Änderungen, und das auch noch in unterschiedlichen Zeilen. Mal sehen, was diff3 in diesem Fall produziert:

====
1:2,3c
This is line2 with some change
This is line3
2:2,3c
This is line2
This is line3
3:2,3c
This is line2
This is line3 with some change

Wie Sie in der oben gezeigten Ausgabe sehen können, enthält die erste Zeile keine Zahl. Das liegt daran, dass jetzt nicht eine, sondern mehrere Dateien Änderungen enthalten. Bei diff3 sind jetzt die Zeilen 2 und 3 aller drei Dateien unterschiedlich. Aus diesem Grund enthält die Ausgabe anstelle einer einzelnen Zahl nach dem Doppelpunkt (:) jetzt einen Bereich - '2,3', was Zeile 2 bis Zeile 3 bedeutet.

Nehmen wir noch ein Beispiel. Angenommen, die drei Dateien enthalten diesmal die folgenden Informationen: 

This is line1
This is line2
This is line3
This is line4
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3
This is line4
This is line5

Wenn nun der diff-Befehl ausgeführt wird, erzeugt er die folgende Ausgabe:

====
1:4c
This is line4
2:3a
3:4,5c
This is line4
This is line5

Wenn Sie versuchen zu verstehen, sagt hier der Befehl diff3, dass die Änderungen in allen drei Dateien nach Zeile 3 sind. Während Datei1 die Zeile „Das ist Zeile4“ als vierte Zeile enthält, enthält Datei3 „Das ist Zeile4“ und „Das ist Zeile5“ als vierte bzw. fünfte Zeile. Die Datei2 hingegen hat nur 3 Zeilen.

Das war also alles über die grundlegende Arbeit an diff3. Für das, was es wert ist, hier, was die offizielle Dokumentation über das Tool sagt:„Sie können den diff3 verwenden Befehl, um Unterschiede zwischen drei Dateien anzuzeigen. Wenn zwei Personen unabhängige Änderungen an einem gemeinsamen Original vorgenommen haben, diff3 kann die Unterschiede zwischen der ursprünglichen und den beiden geänderten Versionen melden und eine zusammengeführte Datei erstellen, die die Änderungen beider Personen zusammen mit Warnungen vor Konflikten enthält.".

Schlussfolgerung

Wir haben hier nur an der Oberfläche gekratzt, Diff3 kann noch viel mehr. Wie die offizielle Dokumentation auch hervorhebt, können Sie damit beispielsweise auch Änderungen zusammenführen. Außerdem gibt es viele Befehlszeilenoptionen, mit denen Sie die Ausgabe des Befehls anpassen und auf einige andere Funktionen zugreifen können, die er bietet. Es steht alles auf der Manpage, gehen Sie es durch.


Linux
  1. So führen Sie einen zeilenweisen Vergleich von Dateien in Linux mit dem Befehl diff durch

  2. So verwalten Sie Protokolldateien mit Logrotate unter Linux

  3. Herunterfahren oder Neustarten von Linux über die Befehlszeile

  4. So starten Sie Linux über die Befehlszeile neu

  5. 11 Linux diff3-Befehlsbeispiele (Vergleiche 3 Dateien Zeile für Zeile)

So teilen Sie Dateien lokal unter Linux mit NitroShare

So benennen Sie Dateien über die Befehlszeile in Linux um

So vergleichen Sie Dateien unter Linux mit dem Tool Meld (Diff/Merge).

So vergleichen Sie zwei Dateien im Linux-Terminal

So kopieren Sie Dateien unter Linux mit dem CP-Befehl

So laden Sie Dateien in Rocky Linux 8 über die Befehlszeile mit wget herunter