Heim  >  Artikel  >  System-Tutorial  >  Vergleichen Sie zwei sortierte Dateien mit dem Befehl „comm“.

Vergleichen Sie zwei sortierte Dateien mit dem Befehl „comm“.

WBOY
WBOYnach vorne
2024-01-08 14:50:27858Durchsuche
Mit dem Befehl
Einführungcomm in Linux können Benutzer zwei sortierte Dateien Zeile für Zeile vergleichen. In diesem Tutorial besprechen wir dieses Befehlszeilentool anhand einiger leicht verständlicher Beispiele. Bevor Sie beginnen, beachten Sie bitte, dass alle in diesem Tutorial erwähnten Beispiele auf der Ubuntu 16.04LTS-Version getestet wurden. .

Das folgende Beispiel zeigt Ihnen, wie der Befehl comm funktioniert. .

比较两个排序好的文件的方法—— comm

So verwenden Sie Comm, um zwei sortierte Dateien zu vergleichen

Um den Befehl comm zum Vergleichen zweier sortierter Dateien zu verwenden, übergeben Sie einfach deren Namen als Argumente an den Befehl comm . Hier ist die übliche Syntax:

comm [name-of-first-file] [name-of-second-file]

Angenommen, Datei1 und Datei2 sind in diesem Fall die beiden Dateien. Ersteres enthält die folgenden Zeilen:

001
056
127
258

Letzteres enthält die folgenden Zeilen:

002
056
167
369

Zu diesem Zeitpunkt sieht die Ausgabe des Befehls comm wie folgt aus:

comm file1 file2

比较两个排序好的文件的方法—— comm

Sie können sehen, dass die Ausgabe 3 Spalten enthält. Die erste Spalte ist das, was nur in Datei1 enthalten ist, die zweite Spalte ist das, was nur in Datei2 enthalten ist, und schließlich ist die dritte Spalte das, was in beiden Dateien enthalten ist.

So geben Sie bestimmte Spalten in der Ausgabe des Kommunikationsbefehls nicht aus

Wenn Sie möchten, können Sie bestimmte Spalten in der commcommand-Ausgabe nicht ausgeben. Für diese Funktion stehen Ihnen drei Befehlszeilenoptionen zur Verfügung: -1, -2 und -3. Wie Sie vielleicht erraten haben, stellen diese Zahlen Spalten dar, die Sie nicht ausgeben möchten.

Zum Beispiel gibt der folgende Befehl die dritte Spalte im obigen Beispiel nicht aus:

comm -3 file1 file2

比较两个排序好的文件的方法—— comm

Sie sehen also, dass in der dritten Spalte keine Ausgabe erfolgt.

Beachten Sie, dass Sie mit einem einzigen Befehl nicht mehrere Spalten gleichzeitig ausgeben können. Zum Beispiel:

comm -12 file1 file2

Der obige Befehl gibt die erste und zweite Spalte nicht aus.

So verwenden Sie den Befehl „comm“, um zwei unsortierte Dateien zu vergleichen

Wie wir wissen, funktioniert comm nur bei sortierten Dateien. Wenn festgestellt wird, dass eine der Dateien nicht sortiert ist, wird in der Ausgabe eine Meldung generiert, um den Benutzer zu informieren. Zum Beispiel vertauschen wir die erste und zweite Zeile von Datei1 und vergleichen mit Datei2. Hier ist die Ausgabe des Befehls:

比较两个排序好的文件的方法—— comm

Sie können sehen, dass dieser Befehl eine Ausgabe erzeugt, die uns mitteilt: Datei1 ist noch nicht sortiert. Wenn Sie an dieser Stelle nicht möchten, dass das Tool prüft, ob die Eingabe sortiert ist, können Sie die Option --nocheck-order verwenden:

comm --nocheck-order file1 file2

比较两个排序好的文件的方法—— comm

Sie können sehen, dass die zuvor angezeigte Aufforderungsmeldung verschwunden ist.

Hinweis: Wenn Sie den Befehl comm explizit anweisen möchten, zu prüfen, ob die Eingabedatei sortiert ist, können Sie die Option --check-order verwenden.

如何用自定义字符串分隔comm 命令的输出列

默认情况下,comm 命令的输出列之间是以空格分隔的。然而,如何你想使用一个自定义字符串作为分隔符,那么你可以使用 --output-delimiter选项。使用该选项时需要指定你想用来作为分隔符的字符串。

comm --output-delimiter=+ file1 file2

比如,我们使用加号来作为分隔符:

比较两个排序好的文件的方法—— comm

如何使 comm 的输出行以 NUL字符终止

默认情况下,comm 命令的输出行以新行终止。然而,如果你想,那么你可以改为以 NUL 字符终止,只需要使用-z 选项即可:

comm -z file1 file2
结论

comm 命令并没有特别多的特性性,我们在这儿已经讨论了它的绝大多数命令行选项。只需要理解和练习在这篇教程中讨论的内容,那么你便可以在日常工作中知道如何使用这个工具了。如果你有任何问题或者疑问,请前往该命令的 man 手册,或者在下面评论。


Das obige ist der detaillierte Inhalt vonVergleichen Sie zwei sortierte Dateien mit dem Befehl „comm“.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen