logo

So vergleichen Sie Dateien Zeile für Zeile unter Linux | diff-Befehl

In der Linux-Welt ist das Verwalten und Vergleichen von Dateien eine häufige Aufgabe für Systemadministratoren und Entwickler. Die Möglichkeit, Dateien Zeile für Zeile zu vergleichen, ist entscheidend für die Identifizierung von Unterschieden, das Debuggen von Code und die Gewährleistung der Datenintegrität. Ein leistungsstarkes Tool, das diesen Prozess erleichtert, ist dasdiff>Befehl. In diesem Artikel erfahren Sie, wie Sie das verwendendiff>Befehl zum zeilenweisen Vergleichen von Dateien unter Linux.

Inhaltsverzeichnis



Den diff-Befehl verstehen

diff steht für Unterschied .Derdiff>command ist ein vielseitiges Dienstprogramm, das auf den meisten Linux-Distributionen vorinstalliert ist. Sein Hauptzweck besteht darin, den Inhalt zweier Dateien zu vergleichen und die Unterschiede zwischen ihnen anzuzeigen. Der Befehl bietet eine umfassende Möglichkeit, Änderungen, Ergänzungen und Löschungen in einem klaren und lesbaren Format hervorzuheben.

Mit diesem Befehl werden die Unterschiede in den Dateien angezeigt, indem die Dateien Zeile für Zeile verglichen werden. Im Gegensatz zu seinen Kollegen cmp Und Komm , sagt es uns, welche Zeilen in einer Datei geändert werden müssen, um die beiden Dateien identisch zu machen.

Java-Programme

Es ist wichtig, sich daran zu erinnern diff verwendet bestimmte spezielle Symbole Und Anweisungen die erforderlich sind, um zwei Dateien identisch zu machen. Darin erfahren Sie, wie Sie die erste Datei so ändern, dass sie mit der zweiten Datei übereinstimmt.



Grundlegende Syntax des Diff-Befehls

Die grundlegende Syntax derdiff>Der Befehl lautet wie folgt:

diff [OPTION]... FILE1 FILE2>

Hier: ` FILE1`> und ` FILE2`> sind die beiden Dateien, die Sie vergleichen möchten.

Das ` OPTION`> Mit dem Flag können Sie das Verhalten des ` anpassen diff`> Befehl.



Verfügbare Optionen im Befehl diff

Möglichkeit

Beschreibung

-c>oder--context>

Ausgabeunterschiede im Kontextmodus

-u>oder--unified>

Ausgabeunterschiede im einheitlichen Modus (prägnanter)

-i>oder--ignore-case>

Führen Sie einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung durch

–ignore-all-space

Leerzeichen beim Zeilenvergleich ignorieren

-knapp

Es wird nur ausgegeben, ob sich Dateien unterscheiden, keine Details

–rekursiv

Verzeichnisse rekursiv vergleichen

-y>oder--side-by-side>

Zeigen Sie die Ausgabe nebeneinander an

Praktische Implementierung von Wie vergleiche ich Dateien Zeile für Zeile unter Linux? :

Vergleich zweier Dateien

Vergleichen Sie Dateien Zeile für Zeile unter Linux.

Nehmen wir an, wir haben zwei Dateien mit Namen a.txt Und b.txt Enthält 5 indische Bundesstaaten.

cat a.txt cat b.txt>
Anzeigen des Inhalts von Dateien mit dem Befehl cat

Anzeigen des Inhalts von Dateien mit dem Befehl cat

Wenn wir nun den Befehl diff ohne Option anwenden, erhalten wir die folgende Ausgabe:

diff a.txt b.txt>
Datei zeilenweise unter Linux vergleichen

Datei zeilenweise unter Linux vergleichen

Werfen wir einen Blick darauf, was diese Ausgabe bedeutet. Die erste Zeile des diff Die Ausgabe enthält:

  • Zeilennummern entsprechend der ersten Datei,
  • Ein besonderes Symbol und
  • Zeilennummern, die der zweiten Datei entsprechen.

Wie in unserem Fall, 0a1 was bedeutet nach Zeilen 0 (ganz am Anfang der Datei) müssen Sie hinzufügen Tamil Nadu um mit der zweiten Dateizeilennummer 1 übereinzustimmen. Anschließend erfahren wir, um welche Zeilen es sich in jeder Datei handelt, denen das Symbol vorangestellt ist:

  • Zeilen mit vorangestelltem a < sind Zeilen aus der ersten Datei.
  • Zeilen mit vorangestelltem > sind Zeilen aus der zweiten Datei.
  • Die nächste Zeile enthält 2,3c3 Das bedeutet, dass Zeile 2 bis Zeile 3 in der ersten Datei geändert werden muss, damit sie mit Zeile 3 in der zweiten Datei übereinstimmt. Anschließend werden uns die Zeilen mit den oben genannten Symbolen angezeigt.
  • Die drei Striche (—) Trennen Sie lediglich die Zeilen von Datei 1 und Datei 2.

Als Zusammenfassung, um beide Dateien identisch zu machen, fügen Sie zunächst hinzu Tamil Nadu in der ersten Datei ganz am Anfang, um mit Zeile 1 der zweiten Datei übereinzustimmen, danach ändern Sie Zeile 2 und 3 der ersten Datei, d. h. Uttar Pradesh Und Kalkutta mit Zeile 3 der zweiten Datei, d.h. Andhra Pradesh . Danach ändern Sie Zeile 5 der ersten Datei, d. h. Jammu und Kaschmir mit Zeile 5 der zweiten Datei, d.h. Uttar Pradesh .

Löschen einer Zeile in Dateien mit dem Befehl diff

Betrachten Sie das Szenario, in demdiff>weist darauf hin, dass eine Zeile gelöscht werden muss. Angesichts zweier Dateien:a.txt>Undb.txt>:

Anzeigen des Inhalts von Dateien mit dem Befehl cat

Anzeigen des Inhalts von Dateien mit dem Befehl cat

diff a.txt b.txt>
Eine Zeile in einer Datei löschen

Eine Zeile in einer Datei löschen

Hier oben Ausgabe 3d2 bedeutet, Zeile 3 der ersten Datei zu löschen, d. h. Telangana damit beide Dateien synchronisieren in Zeile 2.

Unterschiede im Kontextmodus anzeigen

Um Unterschiede im Kontextmodus anzuzeigen, verwenden Sie die -C Möglichkeit. Versuchen wir dies anhand eines Beispiels zu verstehen: Wir haben zwei Dateien Datei1.txt Und Datei2.txt :

Anzeigen des Inhalts von Dateien mit dem Befehl cat

Anzeigen des Inhalts von Dateien mit dem Befehl cat

diff -c file1.txt file2.txt>
Anzeigeunterschied im Kontextmodus

Anzeigeunterschied im Kontextmodus

In der obigen Ausgabe:

  • Die erste Datei wird mit „gekennzeichnet“. ***`> , und die zweite Datei wird mit ` bezeichnet ---`> .
  • Die Zeile mit ` ***************`> dient als Trennzeichen.
  • Die ersten beiden Zeilen enthalten Informationen zu Datei 1 und Datei 2 und zeigen den Dateinamen, das Änderungsdatum und die Änderungszeit an.
  • Darauf folgen drei Sternchen „ ***`> gefolgt von einem Zeilenbereich aus der ersten Datei (Zeilen 1 bis 4). Vier Sternchen ` ****`> komm als nächstes. Der Inhalt der ersten Datei wird dann mit spezifischen Indikatoren angezeigt:
    • Bei unveränderter Zeile werden ihr zwei Leerzeichen vorangestellt.
    • Wenn eine Zeile geändert werden muss, wird ihr ein Symbol und ein Leerzeichen vorangestellt. Die Symbole bedeuten:
      • `+`> : Eine Zeile in der zweiten Datei, die zur ersten Datei hinzugefügt wird, um identische Ergebnisse zu erzielen.
      • `-`> : Eine Zeile in der ersten Datei, die für identische Ergebnisse gelöscht werden soll.
  • Drei Striche ` ---`> gefolgt von einem Zeilenbereich aus der zweiten Datei (Zeilen 1 bis 4), getrennt durch ein Komma. Vier Striche ` ----`> folgen, und der Inhalt der zweiten Datei wird angezeigt.

Unterschiede im einheitlichen Modus anzeigen

Um Unterschiede im einheitlichen Modus anzuzeigen, verwenden Sie die -In Möglichkeit. Es ähnelt dem Kontextmodus, aber es zeigt keine redundanten Informationen an oder es zeigt die Informationen in prägnanter Form an.

Anzeigen des Inhalts von Dateien mit dem Befehl cat

Anzeigen des Inhalts von Dateien mit dem Befehl cat

diff -u file1.txt file2.txt>
Anzeigeunterschied im Unified-Modus

Anzeigeunterschied im Unified-Modus

In der obigen Ausgabe:

  • Die erste Datei ist mit „ gekennzeichnet ---`> , und die zweite Datei wird durch ` gekennzeichnet +++`> .
  • Die ersten beiden Zeilen enthalten Informationen zu Datei 1 und Datei 2, einschließlich Datum und Uhrzeit der Änderung.
  • Danach „ @@ -1> `,`> 4 +1`> ,`> 4 @@`> bezeichnet den Zeilenbereich für beide Dateien. In diesem Fall handelt es sich um die Zeilen 1 bis 4 in beiden Dateien.
  • Die folgenden Zeilen stellen den Inhalt der Dateien mit spezifischen Indikatoren dar:
    • Unveränderte Zeilen werden ohne Präfix angezeigt.
    • Den Zeilen in der ersten zu löschenden Datei wird das Präfix vorangestellt->.
    • Den Zeilen in der zweiten Datei, die hinzugefügt werden soll, wird das Präfix vorangestellt+>.

In diesem Beispiel zeigt die Ausgabe, dass die Zeilen, die mv und comm enthalten, aus der ersten Datei gelöscht werden müssen, um beide Dateien identisch zu machen (file1.txt>), und die Zeilen, die diff und comm enthalten, müssen hinzugefügt werden.

Groß- und Kleinschreibung beim Vergleichen zwischen Dateien

Standardmäßig ist „ diff`> Groß- und Kleinschreibung wird beachtet. Um einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, verwenden Sie das ` -i`> Möglichkeit:

Anzeigen des Inhalts von Dateien mit dem Befehl cat

Anzeigen des Inhalts von Dateien mit dem Befehl cat

Derdiff>Der Befehl wird dann verwendet, um diese Dateien mit dem zu vergleichen-i>Option, die den Vergleich unabhängig von der Groß-/Kleinschreibung macht.

diff -i file1.txt file2.txt>
Beim Vergleich wird die Groß- und Kleinschreibung nicht beachtet

Beim Vergleich wird die Groß- und Kleinschreibung nicht beachtet

  • 2d1>: Dies weist auf eine Änderung in Zeile 2 der ersten Datei hin (file1.txt>). Derd>steht für „Löschen“ und besagt, dass Zeile 2 aus der ersten Datei gelöscht werden soll.
    • >: Diese Zeile gibt den Inhalt der zu löschenden Zeile an. In diesem Fall ist es mv.
  • 3a3>: Dies weist auf einen Zusatz in Zeile 3 der ersten Datei hin (file1.txt>). Dera>steht für add und besagt, dass an Position 3 eine Zeile hinzugefügt werden soll.
    • >diff>: Diese Zeile stellt den hinzuzufügenden Inhalt dar. In diesem Fall ist es diff.

Zusammenfassend sagt uns die Ausgabe, dass wir die Zeile mit mv aus der ersten Datei löschen müssen, um beide Dateien identisch zu machen (Groß- und Kleinschreibung ignorieren).file1.txt>) und fügen Sie den Zeilenunterschied an derselben Position hinzu. Derdiff>Befehl, mit dem-i>Option ermöglicht einen Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung, sodass mv und MV während der Analyse als gleich betrachtet werden.

Anzeigendiff>Ausführung

Um die Version von „ diff`> auf Ihrem System installiert ist, verwenden Sie das ` --version`> Möglichkeit:

diff --version>
Version des Diff-Befehls wird angezeigt

Version des Diff-Befehls wird angezeigt

Dieser Befehl liefert Informationen über die Version, Lizenzierung und Autoren der Datei „ diff`> Dienstprogramm.

Häufig gestellte Fragen zum Diff-Befehl – ​​FAQs

Wie verwende ich diediff>Befehl zum zeilenweisen Vergleich zweier Dateien unter Linux?

Um zwei Dateien Zeile für Zeile zu vergleichen, verwenden Sie diediff>Befehl verwenden Sie einfach die folgende Syntax:

diff file1.txt file2.txt>

Dieser Befehl zeigt die Unterschiede zwischen den beiden Dateien an und hebt Hinzufügungen, Löschungen und Änderungen hervor.

Kann ich Leerzeichenunterschiede beim Vergleichen von Dateien mit dem ignorieren?diff>Befehl?

Ja dasdiff>Der Befehl liefert die-w>oder--ignore-all-space>Option zum Ignorieren von Leerzeichenunterschieden. Zum Beispiel:

diff -w file1.txt file2.txt>

Dies ist besonders nützlich, wenn Sie Codedateien vergleichen, bei denen Änderungen in Einrückung oder Abstand keine wesentliche Rolle spielen.

Pandas erstellen Datenrahmen

Wie kann ich mit dem eine Patch-Datei erstellen?diff>Befehl?

Um eine Patch-Datei zu erstellen, die die Unterschiede zwischen zwei Dateien darstellt, verwenden Sie die-u>Option und leiten Sie die Ausgabe in eine Datei um:

diff -u file1.txt file2.txt>mypatch.patch>

Die generierte Patchdatei kann später angewendet werden, um eine andere Datei mit den Änderungen zu synchronisieren.

Was ist das einheitliche Format?diff>Ausgabe und wie unterscheidet sie sich vom Kontextformat?

Das einheitliche Format (` -u`> Option) in ` diff`> Die Ausgabe bietet eine prägnantere und lesbarere Darstellung der Unterschiede im Vergleich zum Kontextformat (` -c`> Möglichkeit). Es zeigt Änderungen in einer kompakteren Form an und erleichtert so das Verständnis von Änderungen zwischen Dateien.

Wie vergleiche ich rekursiv zwei Verzeichnisse unter Linux mit demdiff>Befehl?

Um zwei Verzeichnisse und deren Inhalte rekursiv zu vergleichen, verwenden Sie die ` -r`> oder ` --recursive`> Option mit derdiff>Befehl:

diff -r directory1/ directory2/>

Dieser Befehl vergleicht alle Dateien in den angegebenen Verzeichnissen und liefert detaillierte Informationen über die Unterschiede.

Abschluss

In der Linux-Welt ist der Vergleich von Dateien eine häufige Aufgabe für Systemadministratoren und Entwickler. Das ` diff> Der Befehl ist ein praktisches Tool, das bei diesem Prozess hilft. In diesem Artikel wird erläutert, wie man „ verwendet diff`> um Dateien Zeile für Zeile unter Linux zu vergleichen. Es behandelt die grundlegende Syntax, wichtige Optionen wie den Kontextmodus und den einheitlichen Modus sowie praktische Anwendungen wie das Erstellen von Patchdateien und den rekursiven Vergleich von Verzeichnissen. Egal, ob Sie Code debuggen oder die Dateiintegrität sicherstellen, das Verständnis und die Beherrschung des „ diff`> Der Befehl ist für eine effiziente Dateiverwaltung unter Linux unerlässlich.