Praktische Beispiele für die Verwendung von comm
Nachdem Sie die grundlegende Verwendung des comm
-Befehls verstanden haben, wollen wir einige praktische Beispiele betrachten, die seine Nützlichkeit in realen Szenarien zeigen.
Beispiel 1: Finden neuer Einträge
Stellen Sie sich vor, Sie haben zwei Listen von Benutzern - eine von der vergangenen Woche und eine von heute. Sie möchten herausfinden, welche Benutzer neu hinzugefügt wurden (seit der vergangenen Woche).
Erstellen wir diese Dateien:
cd ~/project/comm-lab
echo -e "user1\nuser2\nuser3\nuser4\nuser5" | sort > users_last_week.txt
echo -e "user1\nuser3\nuser5\nuser6\nuser7\nuser8" | sort > users_today.txt
Um die neuen Benutzer zu finden (in users_today.txt
, aber nicht in users_last_week.txt
):
comm -13 users_last_week.txt users_today.txt
Ausgabe:
user6
user7
user8
Beispiel 2: Finden von entfernten Einträgen
Unter Verwendung derselben Dateien wollen wir herausfinden, welche Benutzer seit der vergangenen Woche entfernt wurden:
comm -23 users_last_week.txt users_today.txt
Ausgabe:
user2
user4
Beispiel 3: Kombinieren von comm mit anderen Befehlen
Der comm
-Befehl kann mit anderen Befehlen kombiniert werden, um komplexere Operationen auszuführen. Beispielsweise möchten wir zählen, wie viele gemeinsame Befehle in unseren ursprünglichen Dateien vorhanden sind:
comm -12 commands1.txt commands2.txt | wc -l
Dies leitet die gemeinsamen Zeilen an den wc -l
-Befehl weiter, der die Anzahl der Zeilen zählt.
Ausgabe:
5
Dies zeigt an, dass es 5 Befehle gibt, die in beiden Dateien gemeinsam sind.
Beispiel 4: Verwenden von comm mit unsortierten Dateien
Der comm
-Befehl erfordert sortierte Eingabedateien. Wenn Sie ihn mit unsortierten Dateien verwenden, erhalten Sie möglicherweise falsche Ergebnisse. Zeigen wir dies auf:
echo -e "cat\nls\npwd\ncd" > unsorted1.txt
echo -e "ls\ncat\ngrep\npwd" > unsorted2.txt
Wenn wir versuchen, comm
direkt zu verwenden:
comm unsorted1.txt unsorted2.txt
Die Ausgabe kann irreführend sein, da die Dateien nicht sortiert sind. Der richtige Ansatz besteht darin, die Dateien zuerst zu sortieren:
comm <(sort unsorted1.txt) <(sort unsorted2.txt)
Dies verwendet die Prozesssubstitution, um die Dateien vor dem Vergleich on-the-fly zu sortieren. Sie sollten ein korrekt formatiertes Ergebnis mit den richtigen Spalten sehen.
Diese Beispiele zeigen die Vielseitigkeit des comm
-Befehls zum Vergleichen von Textdateien in verschiedenen Szenarien, wie z. B. das Verfolgen von Änderungen, das Finden von Unterschieden und das Filtern von Daten.