Linux / Befehl comm: Zwei sortierte Dateien vergleichen
comm vergleicht zwei sortierte Dateien Zeile für Zeile. Es zeigt Zeilen, die nur in der ersten Datei vorkommen, Zeilen, die nur in der zweiten Datei vorkommen, und Zeilen, die in beiden vorhanden sind, in drei Spalten an.
Standardmäßig unterscheiden Tabs die zweite und die dritte Spalte. Verwenden Sie -1, -2 oder -3, um die entsprechende Spalte auszublenden. Wenn Sie Änderungen nach Zeilenposition sehen müssen, ist diff besser geeignet.
Grundlegende Syntax
comm [options] sorted_file1 sorted_file2
Implementierungen und Optionen können je nach Distribution variieren. Prüfen Sie die Dokumentation Ihres Systems mit man comm.
Beispiele
Drei Arten von Zeilen anzeigen
Vergleichen Sie nach dem Sortieren beider Dateien nach denselben Kriterien.
comm old.sorted new.sorted
Nur gemeinsame Zeilen anzeigen
Die erste und zweite Spalte ausblenden, nur die dritte gemeinsame Spalte belassen.
comm -12 old.sorted new.sorted
Nur Zeilen in der zweiten Datei
Blendet die erste und dritte Spalte aus, sodass nur die ausschließlich in der zweiten Datei enthaltenen Zeilen sichtbar bleiben.
comm -13 old.sorted new.sorted
Die drei Spalten und gemeinsamen Zeilen lesen
comm unterscheidet Zeilen nach Spalte, die nur in der ersten Datei, der zweiten Datei und der Zeile, die beiden Dateien gemeinsam ist, existiert. -12 blendet die ersten beiden Spalten aus und belässt nur die gemeinsame Zeile.
printf 'apple\nbanana\n' > first.txt printf 'banana\ncherry\n' > second.txt comm -12 first.txt second.txt
Beispielausgabe:
banana
Beide Dateien müssen innerhalb derselben Gebietsschemavorgabe vorab sortiert sein. Unsortierte Eingaben machen es schwer, dem Inhalt der Spalten zu vertrauen. Denken Sie daran, dass comm das Vorhandensein von Zeilen vergleicht und diff Änderungen einschließlich der Zeilenpositionen zeigt.
Hauptoptionen und Format
| Optionen/Format | Beschreibung |
|---|---|
-1 |
Spalten von Zeilen nur in der ersten Datei ausblenden. |
-2 |
Spalten von Zeilen nur in der zweiten Datei ausblenden. |
-3 |
Spalten von Zeilen ausblenden, die in beiden Dateien gemeinsam sind. |
--check-order |
Überprüfen Sie die Sortierreihenfolge in der GNU-Implementierung. |
Vorsichtsmaßnahmen bei der Verwendung
Sortieren Sie beide Eingabedateien unter Verwendung derselben Gebietsschemavorgabe. Zum Beispiel sollten Dateien, die mit LC_ALL=C sort sortiert wurden, auch unter dem C-Gebietsschema verglichen werden. Da comm sortierte Zeilen anstelle der Zugehörigkeit zur Menge vergleicht, sollten Sie vor dem Vergleich festlegen, wie doppelte Zeilen interpretiert werden sollen.
Häufig gestellte Fragen
Was bedeuten die Spalten im comm-Ergebnis?
Die erste Spalte enthält Zeilen, die nur in Datei1 vorkommen, die zweite Spalte enthält Zeilen, die nur in Datei2 vorkommen, und die dritte Spalte enthält Zeilen, die in beiden Dateien vorkommen.
Offizielle Dokumentation
Für das genaue Verhalten der Optionen siehe das GNU Coreutils-Handbuch.




