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

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

Wenn Sie ein Linux-Benutzer sind und Ihre Arbeit die Arbeit an verschiedenen Linux-Distributionen umfasst, kann es vorkommen, dass Sie Befehle auf einem Linux-System ohne GUI eingeben. Das bedeutet, dass Sie nicht mehr auf Ihre bevorzugten GUI-Anwendungen zugreifen können, z. B. Gedit zum Bearbeiten von Dateien, die Sie normalerweise für Ihre normale Arbeit verwenden.

Unabhängig davon, ob Sie Systemadministrator oder Entwickler sind, der Dateivergleich ist eine Aufgabe, die fast jedermanns Arbeit gemeinsam ist. Was ist, wenn Sie zwei Dateien vergleichen müssen, während Sie auf einem reinen CLI-Linux-System arbeiten? Ihr bevorzugtes GUI-basiertes Vergleichstool wird Ihnen offensichtlich nicht zur Verfügung stehen. Unnötig zu erwähnen, dass Sie sich mit einem Befehlszeilenprogramm begnügen müssen, um Ihre Arbeit zu erledigen.

Unter Linux kann der diff-Befehl verwendet werden, um zwei Dateien zu vergleichen, aber die Sache ist, dass dieses Dienstprogramm eine leichte Lernkurve mit sich bringt. Wenn Sie nicht wissen, wie diff funktioniert, und nach einem schnellen Tutorial für den Einstieg suchen, suchen Sie nicht weiter, denn in diesem Artikel werden wir die Grundlagen dieses Befehls zusammen mit einigen leicht verständlichen Beispielen besprechen.

Bevor wir fortfahren, denken Sie daran, dass alle Beispiele in dieser Anleitung auf Ubuntu 14.04 mit Bash-Version 4.3.11(1) und Diff-Version 3.3 getestet wurden.

 

Linux-Diff-Befehl

Anstatt direkt zu den Beispielen zu springen, ist es gut, zuerst etwas über den Befehl zu wissen. Die Manpage des diff-Befehls zeigt, dass das Tool Dateien Zeile für Zeile vergleicht. Seine Syntax ist:

diff [OPTION]... DATEIEN

Während [OPTION] stellt die verschiedenen Befehlszeilenoptionen dar, die das Tool bietet, FILES ist normalerweise ein paar Dateinamen. Obwohl die man-Seite von diff nützliche Informationen über den Befehl enthält, wird die vollständige Dokumentation für diff als Texinfo-Handbuch gepflegt. Wenn die info und diff Programme ordnungsgemäß auf Ihrer Site installiert sind, wird der Befehl

Info diff

sollte Ihnen Zugriff auf das vollständige Handbuch geben.

Diff-Nutzung/Beispiele

Lassen Sie uns nun besprechen, wie diff verwendet wird. Beginnen wir dazu mit einem einfachen Beispiel. Angenommen, es folgen die beiden Dateien, die wir vergleichen möchten:

Datei1:

test
test2
test3

Datei2:

test
test23
test3

So können Sie den diff-Befehl verwenden, um diese beiden Dateien zu vergleichen:

diff Datei1 Datei2

Und hier ist die Ausgabe, die der obige Befehl erzeugt:

2c2
---
> test23

Die Ausgabe scheint kryptisch, oder? Wir kommen gleich darauf zurück. Lassen Sie uns zunächst die grundlegende Struktur der Ausgabe verstehen, die diff im Allgemeinen erzeugt.

Das erste, was Sie beachten sollten, ist, dass die Ausgabe die Änderungen darstellt, die erforderlich sind, um Datei1 (normalerweise die Originaldatei) in Datei2 (die neue oder geänderte Datei) umzuwandeln. Die Ausgabe besteht normalerweise aus Zeilen, die mit einer Zahl (oder einem Bereich) beginnen, gefolgt von einem Buchstaben (a, d oder c) und einer weiteren Zahl (oder einem Bereich). Zum Beispiel 2c2 (aus der obigen Ausgabe).

Die erste Zahl stellt die Zeile (oder den Zeilenbereich) aus Datei1 (Originaldatei) dar, während die letzte Zahl die Zeile (oder den Zeilenbereich) aus Datei2 (der neuen Datei) darstellt. Was das Alphabet dazwischen betrifft, a steht für hinzugefügt , d ist für gelöscht, und c steht für geändert .

2c2 bedeutet also, dass sich die zweite Zeile in der Originaldatei geändert hat und durch die zweite Zeile aus der neuen Datei ersetzt werden muss, um die Dateien gleich zu machen. Wenn Sie die beiden Dateien (Datei1 und Datei2) manuell vergleichen, sehen Sie, dass genau das der Fall ist.

Was die drei Zeilen nach 2c2 im oben genannten Beispiel betrifft, so ist diejenige, die mit '<' beginnt, nichts anderes als die zweite Zeile von Datei1, und diejenige, die mit '>' beginnt, ist nichts anderes als die fragliche Zeile von Datei 2. Die drei Bindestriche dazwischen (---) dienen nur zur Trennung.

Muss man sich die Ausgabe des ersten Beispiels jetzt noch einmal ansehen? Höchstwahrscheinlich nicht, da die obige Erklärung es selbsterklärend gemacht haben sollte. Nehmen wir nun ein weiteres Beispiel.

Also, hier ist Datei1:

Hallo zusammen,
Dies ist ein Diff-Befehls-Tutorial
von HowtoForge.
Ich hoffe, Sie werden davon profitieren.
Danke.

Hier ist Datei2:

Hallo zusammen,
Willkommen bei HowtoForge.
In diesem Tutorial besprechen wir das Diff-Tool.
Ich hoffe, Sie finden es nützlich.
Danke.
vor>

Hier ist der Befehl (der gleich bleibt):

diff Datei1 Datei2

Und hier ist die Ausgabe:

2,4c2,4
---
> Willkommen bei HowtoForge.
> In diesem Tutorial besprechen wir das Diff-Tool.
> Ich hoffe, Sie finden es hilfreich.

Sie können also in diesem Fall die Hauptausgabe sehen - 2,4c2,4 - besteht aus mehreren Zahlen vor und nach dem Alphabet. Dies sind im Grunde Bereiche - 2,4 steht für Zeilennummer 2,3 und 4. Die Ausgabe bedeutet also, dass sich die Zeilennummern 2 bis 4 in der Originaldatei (Datei1) geändert haben und durch die Zeilennummern 2 bis 4 ersetzt werden müssen file2, um die Dateien gleich zu machen.

Lassen Sie uns den Inhalt der Dateien ein wenig ändern. Während file1 gleich bleibt, wird file2 jetzt zu:

Willkommen bei HowtoForge.
In diesem Tutorial besprechen wir das Diff-Tool.
Ich hoffe, Sie finden es hilfreich.
Danke.

Das ist ein diff-Befehls-Tutorial
von HowtoForge.
Ich hoffe, Sie werden davon profitieren.
Danke.

Wenn Sie nun den diff-Befehl ausführen, wird die folgende Ausgabe erzeugt:

0a1,5
> Willkommen bei HowtoForge.
> In diesem Tutorial besprechen wir das Diff-Tool.
> Ich hoffe, Sie finden es nützlich.
> Danke.
>

Sie können also sehen, dass das Tool sofort erkannt hat, dass der zweite Absatz in Datei2 nichts anderes ist als das, was alle Datei1 enthält. Die Ausgabe besagt also, dass die Zeilen 1 bis 5 von Datei2 an den Anfang von Datei1 angehängt werden sollten, damit die beiden Dateien gleich sind.

Und wenn Sie die letzte Zeile ("Danke") aus Datei2 löschen, ist hier die Ausgabe:

0a1,5
> Willkommen bei HowtoForge.
> In diesem Tutorial besprechen wir das Diff-Tool.
> Ich hoffe, Sie finden es nützlich.
> Danke.
>
4d8

Sie können sehen, dass die Ausgabe jetzt auch 4d8,  enthält was bedeutet, dass die vierte Zeile in Datei1 gelöscht werden sollte, damit beide Dateien ab Zeile 8 synchron sind. Dies geschieht natürlich, nachdem Sie die zuerst erwähnte 0a1,5-Änderung adressiert haben.

Schlussfolgerung

Zugegeben, die Ausgabe des diff-Befehls ist nicht leicht zu verstehen, aber die Lernkurve ist nicht so steil. Verbringen Sie ein paar Stunden mit dem Tool, und Sie werden sich sicher damit vertraut machen. Was das Tutorial betrifft, haben wir hier nur an der Oberfläche gekratzt. Werfen Sie einen Blick auf die Manpage des Befehls und Sie werden feststellen, dass es noch viel mehr über diff zu lernen gibt, etwas, das wir im nächsten Teil dieser Tutorial-Reihe tun werden.


Linux
  1. So benennen Sie Dateien unter Linux um

  2. So führen Sie einen zeilenweisen Vergleich von Dateien in Linux mit dem Befehl diff durch - Teil II

  3. So starten Sie Linux über die Befehlszeile neu

  4. diff-Befehlsbeispiele in Linux

  5. So zeigen Sie versteckte Dateien mit dem Linux-Befehl „find“ an

So benennen Sie Dateien über die Befehlszeile in Linux um

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

So kopieren Sie Dateien unter Linux mit dem CP-Befehl

So zählen Sie Dateien im Verzeichnis unter Linux

Verwenden des Diff-Befehls zum Vergleichen zweier Dateien im Linux-Terminal

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