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

„comm“-Befehl in Linux mit Beispielen

Es ist oft nützlich, Versionen von Textdateien zu vergleichen. Für Systemadministratoren und Softwareentwickler ist dies besonders wichtig. Ein Systemadministrator muss beispielsweise eine vorhandene Konfigurationsdatei mit einer früheren Version vergleichen, um ein Systemproblem zu diagnostizieren. Ebenso muss ein Programmierer häufig sehen, welche Änderungen an Programmen im Laufe der Zeit vorgenommen wurden.

Die Komm zeigt einen zeilenweisen Vergleich zweier sortierter Dateien an. Die erste der drei angezeigten Spalten listet die Zeilen auf, die nur in Datei1 gefunden wurden, die zweite Spalte listet die Zeilen auf, die nur in Datei2 gefunden wurden, und die dritte listet die Zeilen auf, die beiden Dateien gemeinsam sind. Die grundlegende Syntax für den „comm“-Befehl lautet:

# comm [options] file1 file2

Argumente

Die Argumente file1 und file2 sind Pfadnamen der Dateien, die comm vergleicht. Die Verwendung eines Bindestrichs (–) anstelle von Datei1 oder Datei2 bewirkt, dass comm die Standardeingabe anstelle dieser Datei liest.

Optionen

Sie können die Optionen kombinieren. Ohne Optionen erzeugt comm eine dreispaltige Ausgabe.

Optionen Funktion
-1 Zeigt Spalte 1 nicht an (zeigt keine Zeilen an, die nur in Datei1 gefunden wurden).
-2 Zeigt Spalte 2 nicht an (zeigt keine Zeilen an, die nur in Datei2 gefunden wurden).
-3 Zeigt Spalte 3 nicht an (zeigt keine Zeilen an, die in beiden Dateien gefunden wurden).
-i Groß- und Kleinschreibung beim Vergleich von Zeilen.
– -check-order Überprüfen Sie die Reihenfolge der Eingaben, auch wenn alle Eingabezeilen paarbar sind
– -nocheck-order Ignoriere die Reihenfolge der Eingabe
– -output-delimiter=STR trennt Spalten mit dem Trennzeichen „STR“
– -Hilfe Zeigt ein Hilfemenü an
– -Version Informationen zur Befehlsversion anzeigen
Hinweis :Wenn die Dateien nicht sortiert wurden, funktioniert die Kommunikation nicht richtig. Den Zeilen in der zweiten Spalte geht ein TAB voran, und den Zeilen in der dritten Spalte gehen zwei TABs voraus. Der Exit-Status gibt an, ob die Kommunikation normal (0) oder abnormal (nicht 0) abgeschlossen wurde.

Beispiele für die Verwendung des Befehls „comm“ unter Linux

Beispiel 1:Grundlegende Verwendung

Sehen wir uns ein einfaches Beispiel für den Befehl „comm“ an, um zwei sortierte Dateien zu vergleichen. Die Dateien sehen wie folgt aus:

# cat file1
aa
bb
cc
dd
# cat file2
cc
xx
yy
zz

Der Befehl comm vergleicht Dateien Zeile für Zeile und gibt identische Zeilen aus. Zum Beispiel:

# comm file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

Diese Befehlsausgabe wird in drei Spalten angezeigt:Spalte 1 zeigt nur Zeilen in Datei1 (aa, bb, dd), Spalte2 zeigt jede Zeile nur in Datei2 (xx, yy, zz) und Spalte 3 zeigt jede Zeile, die zwischen den gleich ist zwei Dateien (cc). Dies ist ein viel detaillierterer Vergleich als mit diff, und die Ausgabe kann überwältigend sein, wenn Sie nur ein oder zwei einfache Änderungen finden oder überprüfen möchten. Es kann jedoch unglaublich nützlich sein, wenn Sie mit beiden Dateien nicht besonders vertraut sind und sehen möchten, wie sie im Vergleich abschneiden.

Beispiel 2:Spalten unterdrücken

comm unterstützt Optionen in der Form -n, wobei n entweder 1, 2 oder 3 ist. Wenn sie verwendet werden, geben diese Optionen an, welche Spalte(n) unterdrückt werden sollen. Wenn wir beispielsweise nur die Zeilen ausgeben wollten, die von beiden Dateien gemeinsam genutzt werden, würden wir die Ausgabe der Spalten 1 und 2 unterdrücken:

# comm -12 file1 file2
cc

Ebenso können Sie mit den folgenden Befehlen nur die Zeilen anzeigen, die nur in Datei1 bzw. Datei2 vorhanden sind.

# comm -23 file1 file2
aa
bb
dd
# comm -13 file1 file2
xx
yy
zz

Beispiel 3:Sortierprüfung bei Eingabe

Der Befehl comm bietet 2 Optionen, um nach sortierten Eingaben zu suchen:
1. –Bestellung prüfen
2. –nocheck-order

Die –Prüfreihenfolge prüft vor dem Vergleich, ob die Eingabe richtig sortiert ist. Wenn die Eingabe nicht sortiert ist, erhalten Sie einen Fehler wie unten gezeigt:

# comm --check-order file1 file2
aa
bb
cc
dd
	xx
comm: file 2 is not in sorted order

Während die –nocheck-order ermöglicht den Dateivergleich auch dann, wenn die Eingabe nicht im sortierten Format vorliegt. Zum Beispiel:

# cat file1
aa
bb
cc
dd
# cat file2
xx
cc
yy
zz
# comm --nocheck-order file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

Beispiel 4:Ausgabe mit Trennzeichen

comm bietet auch eine Option zum Löschen der Ausgabe mit dem vom Benutzer bereitgestellten Trennzeichen. Beispielsweise können wir anstelle der standardmäßig durch „Tabulator“ getrennten Ausgabe ein Trennzeichen wie „|“ verwenden. (Pipe), wie im folgenden Beispiel gezeigt:

# comm --output-delimiter="|" file1 file2
aa
bb
||cc
dd
|xx
|yy
|zz

comm V/s diff

Komm ist ähnlich wie diff , dass beide Befehle zwei Dateien vergleichen. Aber comm kann auch wie uniq verwendet werden; comm wählt doppelte oder eindeutige Zeilen zwischen zwei sortierten Dateien aus, während uniq doppelte oder eindeutige Zeilen innerhalb derselben sortierten Datei auswählt.


Linux
  1. wc Linux-Befehl mit Beispielen

  2. Linux-Sortierungsbefehl mit Beispielen

  3. Linux Tee-Befehl mit Beispielen

  4. Linux-Kopfbefehl mit Beispielen

  5. JQ-Befehl in Linux mit Beispielen

Linux-CD-Befehl mit Beispielen

Linux-Uhrbefehl mit Beispielen

Wartebefehl in Linux mit Beispielen

Linux-Exportbefehl mit Beispielen

Linux-IP-Befehl mit Beispielen

Linux-Comm-Befehl mit Beispielen