Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

comm - Gleiche Zeilen in zwei sortierten Dateien suchen

&pagelevel(4)&pagelevel

(select or reject lines common to two files)


comm vergleicht zwei Dateien, deren Zeilen nach der aktuell gültigen Sortierreihenfolge sortiert sind. Zum Sortieren können Sie das Kommando sort (siehe sort) verwenden.

Syntax


comm[ -123] datei1 datei2

Keine Option angegeben:


comm gibt drei Spalten aus, die folgende Bedeutung haben:
Spalte 1:Zeilen, die nur in datei1 stehen
Spalte 2:Zeilen, die nur in datei2 stehen
Spalte 3:Zeilen, die in beiden Dateien stehen


Optionen:


-1 Spalte 1 wird nicht ausgegeben.
-2 Spalte 2 wird nicht ausgegeben.
-3 Spalte 3 wird nicht ausgegeben.

Es sind auch Kombinationen der Optionen 1, 2 und 3 zulässig, z.B.:
-12 comm gibt alle Zeilen aus, die beiden Dateien gemeinsam sind.
-23 comm gibt alle Zeilen aus, die nur in datei1 stehen.
-13 comm gibt alle Zeilen aus, die nur in datei2 stehen.
-123 comm gibt nichts aus.


datei1 datei2

Namen der beiden sortierten Dateien, die Sie vergleichen wollen.
Das Kommando comm arbeitet nur korrekt, wenn die beiden zu vergleichenden Dateien sortiert vorliegen. Wenn Sie für einen der beiden Namen den Bindestrich - eingeben, liest comm von der Standard-Eingabe.


Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos comm:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_COLLATE

Legt die Sortierreihenfolge fest.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten).

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel

In der Datei buch sind Buchtitel und die dazugehörenden Autoren erfasst. In jeder Zeile steht ein Buchtitel und dahinter, durch ein Leerzeichen getrennt, der jeweilige Autor. Sie möchten die Datei buch nach mehreren Autoren durchsuchen, die Sie in der Datei autoren1 erfasst haben. Die Dateien buch und autoren1 haben folgenden Inhalt:

buch                                             autoren1
"Mann_aus_Apulien" Stern                         Duras
"Wir_sind_noch_einmal_davongekommen" Wilder      Goethe
"Tod_in_Venedig" Mann                            Joyce
"Ulysses" Joyce                                  Mann
                                                 Schiller
                                                 Wilder

Sie gehen in folgenden Schritten vor:

  • Herausfiltern der Autoren aus buch mit awk.

  • Sortieren der Autoren aus buch mit sort.

  • Umlenken der Ausgabe von sort in die neue Datei autoren2.

  • Vergleichen der beiden Dateien autoren1 und autoren2 mit comm -2.


$ awk '{printf"%s\n",$2}' buch | sort > autoren2


Die Datei autoren2 hat folgenden Inhalt:

Joyce
Mann
Stern
Wilder

$ comm -2 autoren1 autoren2
Duras
Goethe
      Joyce
      Mann
Schiller
      Wilder


Ausgegeben werden in der ersten Spalte alle Autoren, die nur in autoren1 stehen. Darauf folgt der Inhalt der dritten Spalte, das heißt die Namen der Autoren, die in beiden Dateien stehen.

Siehe auch

cmp, diff, sort, uniq