Wir zeigen Ihnen einen Trick, um einen Textvergleich unter Linux durchzuführen

Wir zeigen Ihnen einen Trick, um einen Textvergleich unter Linux durchzuführen

Vorwort

Während des Schreibens des Codes werden wir zwangsläufig einige Änderungen am Code vornehmen. Es kommt jedoch häufig vor, dass Sie beim Vornehmen von Änderungen den Unterschied zwischen der geänderten Datei und der Quelldatei nicht erkennen. Hier benötigen wir ein Textvergleichstool, um einen Textvergleich durchzuführen.

Erfahrene Programmierer wissen, dass es unter Windows ein sehr nützliches Textvergleichstool gibt – BeyondCompare. Allerdings handelt es sich dabei um kostenpflichtige Software und viele herkömmliche Unternehmen erlauben die Nutzung gecrackter Software nicht. Darüber hinaus ist es nur unter Windows verfügbar und es gibt keine Linux-Version.

Für die in diesem Artikel vorgestellte Methode zum Textvergleich ist keine Software erforderlich, sondern nur ein Linux-Befehl. Sobald Sie diesen Befehl gelernt haben, mache ich mir keine Sorgen mehr, dass Sie nicht wissen, wie man Textvergleiche durchführt.

Dieser Linux-Befehl ist der Diff-Befehl.

diff ist ein sehr wichtiges Toolprogramm im Unix-System. Es wird zum Vergleichen der Unterschiede zwischen zwei Textdateien verwendet und ist einer der Eckpfeiler der Codeversionsverwaltung.

Sehen wir uns zunächst das grundlegende Befehlsformat an.

diff [OPTION] … DATEIEN

Es ist ganz einfach. Aber es bietet so viele Möglichkeiten, dass Sie Ihr Leben hinterfragen werden. Machen wir uns darüber jetzt keine Gedanken und lernen wir zuerst die am häufigsten verwendeten. Schließlich sollte die Zeit sinnvoll genutzt werden.

-b – Unterschiede bei Leerzeichen innerhalb einer Zeile ignorieren (z. B. wird „Hallo Welt!“ als dasselbe betrachtet wie „Hallo Welt!!“)

-B – leere Zeilen ignorieren

-i – Groß-/Kleinschreibung ignorieren

-r —— Wenn auf „diff“ ein Verzeichnis folgt, werden die Dateien in den Unterverzeichnissen rekursiv verglichen.

Sehen wir uns genauer an, wie man Text vergleicht.

Der Diff-Befehl hat drei Ausgabeformate:

(1) Normales Format (normaler Diff)

(2) Kontextunterschied

(3) Einheitliches Diff

Wir stellen diese drei Ausgabeformate anhand von Beispielen ausführlich vor. Beispielsweise haben wir jetzt eine Datei ac, deren Inhalt wie folgt ist:

Nun erstellen wir eine Kopie, nennen sie bc und ändern in Zeile 3 das kleine „hallo“ in das große „HALLO“, und zwar wie folgt:

(1) Normales Format

Im normalen Format müssen wir keine Optionen hinzufügen, sondern nur wie folgt vergleichen:

Die Ergebnisse nach der Ausführung sind wie folgt:

Lassen Sie uns die Bedeutung des obigen Bildes Zeile für Zeile erklären.

Reihe: 3c3

Die erste 3 gibt an, dass sich die dritte Zeile der Datei ac geändert hat, und die folgende 3 gibt an, dass sich ac geändert hat und zur dritten Zeile von bc geworden ist. Das c in der Mitte steht für die konkrete Veränderung. c steht für Änderung, und andere Typen sind d für Löschung und a für Hinzufügung.

Zeile 2: < Hallo Welt!

Es bedeutet, den Inhalt der Zeile 3 in der ac-Datei zu entfernen, wobei das Kleiner-als-Zeichen die Entfernung anzeigt.

Dritte Zeile: ------

Teiler

Zeile 4: > HALLO Welt!

Es bedeutet, dass der Inhalt von Zeile 3 zur BC-Datei hinzugefügt wird, wobei das Größer-als-Zeichen eine Erhöhung anzeigt.

(2) Kontextformat

Da das normale Format relativ wenige sofortige Informationen enthält, können wir den geänderten Bereich nicht schnell finden und müssen die Datei häufig öffnen, um die Änderungsdetails anzuzeigen. Um mehr Informationen bereitzustellen, wurde das Kontextformat eingeführt. Der Verwendungsbefehl lautet wie folgt:

Unterschied -c ac bc

Darunter steht c für Context, also Kontext.

Die spezifische Bedeutung der Ausgabeergebnisse in der obigen Abbildung ist wie folgt:

Die erste und zweite Zeile geben die Dateien vor und nach der Änderung sowie den Aktualisierungszeitpunkt an. Die folgenden *** 1,4 **** geben den Inhalt der ac-Datei von Zeile 1 bis Zeile 4 an. Das Ausrufezeichen (!) vor „Hallo Welt“ zeigt an, dass die Zeile geändert wurde. Wird die Zeile gelöscht, ist es ein Minuszeichen (-), wird die Zeile hinzugefügt, ist es ein Pluszeichen (+). Die folgenden Zeilen haben ähnliche Bedeutungen.

(3) Zusammenführungsformat

Dieses Format ist eine Kombination aus dem normalen Format und dem Kontextformat und wird auch von git diff verwendet. Der Befehl in diesem Format lautet:

Unterschied -u ac bc 

Die detaillierte Bedeutung der Ausgabeergebnisse in der obigen Abbildung ist wie folgt:

Die erste und zweite Zeile geben die Dateien vor und nach der Änderung sowie den Aktualisierungszeitpunkt an. Das „-hello world!“ am Ende bezieht sich auf den Inhalt in der Originaldatei ac, und „+HELLO world!“ bezieht sich auf den Inhalt in bc.

Zusätzlich zu den oben genannten drei Formaten gibt es noch eine weitere, intuitivere Möglichkeit – das Side-by-Side-Format. Das Befehlsformat für dieses Anzeigeformat ist wie folgt:

Die Darstellung erfolgt in einem parallelen Format, was ebenfalls sehr intuitiv und übersichtlich ist. In Zeile 3 befindet sich ein „|“-Symbol, das darauf hinweist, dass diese Zeile geändert wurde. Darüber hinaus bedeutet ein „<“ am Anfang der Zeile, dass die folgende Datei eine Inhaltszeile weniger hat als die vorherige Datei; ein „>“ am Anfang bedeutet, dass die folgende Datei eine Inhaltszeile mehr hat als die vorherige Datei.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Ein Shell-Befehl pro Tag. Linux-Reihe von Textinhaltsoperationen - ausführliche Erklärung des awk-Befehls
  • Ein Shell-Befehl pro Tag. Linux-Reihe von Textinhaltsoperationen – ausführliche Erklärung des Cut-Befehls
  • Verwenden Sie reguläre Ausdrücke in Linux, um flexibel nach Text in Dateien zu suchen
  • Ein Shell-Befehl pro Tag Linux-Textoperationsreihe - Verwendung des Touch-Befehls
  • Ein Shell-Befehl pro Tag Linux-Textoperationsreihe - ausführliche Erklärung der Befehle head und tail
  • Ein Shell-Befehl pro Tag Linux-Textoperationsreihe - detaillierte Erklärung des Diff-Befehls
  • Ein Shell-Befehl pro Tag Linux-Reihe von Textinhaltsoperationen - ausführliche Erklärung des Grep-Befehls
  • Ein Shell-Befehl pro Tag Linux-Textoperationsreihe - detaillierte Erklärung des WC-Befehls
  • Detaillierte Erläuterung des Befehls zur Konvertierung des Zeilenumbruchformats von Linux-Textdateien und WIN-Textdateien
  • Eine Reihe von Shell-Befehlstextoperationen pro Tag - Tutorial zur Verwendung von Linux DD

<<:  So aktualisieren Sie MySQL 5.6 auf 5.7 unter Windows

>>:  Vue2.x - Beispiel für die Verwendung von Anti-Shake und Throttling

Artikel empfehlen

Eine kurze Einführung in Web2.0-Produkte und -Funktionen

<br />Was ist Web 2.0? Web2.0 umfasst diese ...

Schnelle und sichere Methode zum Umbenennen einer MySQL-Datenbank (3 Arten)

Inhaltsverzeichnis So benennen Sie eine MySQL-Dat...

Detaillierte Analyse des MySQL Master-Slave-Verzögerungsphänomens und -prinzips

1. Phänomen Am frühen Morgen wurde einer Online-T...

Detaillierte Erläuterung der Nginx-Timeout-Konfiguration

Ich habe kürzlich in einem Projekt nginx und im B...

Erstellen von responsiven E-Mails mit Vue.js und MJML

MJML ist ein modernes E-Mail-Tool, mit dem Entwic...

So löschen Sie die Validierungsaufforderung bei der Elementformularvalidierung

Inhaltsverzeichnis Problemszenario: Lösung: 1. Üb...

Verwenden Sie das Firebug-Tool, um die Seite auf dem iPad zu debuggen

Wie debuggt man eine Seite auf dem iPad? Wenn Sie ...

So implementieren Sie ein Hover-Dropdown-Menü mit CSS

Wie üblich werde ich heute über einen sehr prakti...

So migrieren Sie das Datenverzeichnis in Docker

Inhaltsverzeichnis Datenträgernutzung anzeigen Da...

Übung zum Hochladen von Element-Avataren

Dieser Artikel verwendet die offizielle Element-W...

Sehr detaillierte Anleitung zum Upgrade der MySQL-Version

Inhaltsverzeichnis 1. Einleitung 2. Sichern Sie d...

Hinweise zur Konfiguration mehrerer Proxys mithilfe von Vue-Projekten

Im Entwicklungsprozess eines Vue-Projekts konfigu...