Erweiterte uniq-Optionen und praktische Anwendungen
Nachdem Sie die Grundlagen des uniq
-Befehls und seine Kombination mit sort
verstanden haben, wollen wir uns einige zusätzliche Optionen des uniq
-Befehls ansehen, die ihn für Datenverarbeitungseaufgaben noch leistungsfähiger machen.
Zählen der Vorkommen mit -c
Die Option -c
zählt die Anzahl der Vorkommen jeder Zeile. Dies ist nützlich, wenn Sie wissen möchten, wie oft jede eindeutige Zeile in Ihrer Datei erscheint:
sort ~/project/duel_log.txt | uniq -c
Sie sollten eine Ausgabe wie diese sehen:
2 potion
2 shield
2 sword
Dies zeigt, dass jedes Element in unserer ursprünglichen Datei zweimal erscheint.
Finden nur von doppelten Zeilen mit -d
Wenn Sie nur an doppelten Zeilen (Zeilen, die mehr als einmal erscheinen) interessiert sind, können Sie die Option -d
verwenden:
sort ~/project/duel_log.txt | uniq -d
Ausgabe:
potion
shield
sword
Da alle Elemente in unserer Datei Duplikate haben, werden alle in der Ausgabe aufgelistet.
Erstellen einer Datei mit nur eindeutigen Einträgen
Erstellen wir eine neue Datei mit abwechslungsreicherem Inhalt, um den uniq
-Befehl besser zu demonstrieren:
echo -e "apple\napple\napple\nbanana\ncherry\ncherry\ngrape" > ~/project/fruits.txt
Lassen Sie uns diese Datei untersuchen:
cat ~/project/fruits.txt
Ausgabe:
apple
apple
apple
banana
cherry
cherry
grape
Jetzt verwenden wir die Option -u
, um Einträge zu finden, die genau einmal erscheinen:
sort ~/project/fruits.txt | uniq -u
Ausgabe:
banana
grape
Dies zeigt, dass "banana" und "grape" in unserer Datei nur einmal erscheinen.
Praktische Anwendung: Protokollanalyse (Log Analysis)
Erstellen wir eine einfache Protokolldatei, um eine reale Anwendung zu simulieren:
echo -e "INFO: System started\nERROR: Connection failed\nINFO: User logged in\nWARNING: Low memory\nERROR: Connection failed\nINFO: System started" > ~/project/system.log
Jetzt analysieren wir diese Protokolldatei, um herauszufinden, welche Arten von Nachrichten auftreten und wie oft:
cat ~/project/system.log | sort | uniq -c
Die Ausgabe sollte in etwa so aussehen:
2 ERROR: Connection failed
2 INFO: System started
1 INFO: User logged in
1 WARNING: Low memory
Dies gibt Ihnen einen schnellen Überblick über die Arten von Ereignissen in Ihrer Protokolldatei und ihre Häufigkeiten.
Sie können auch nur die Nachrichtentypen (INFO, ERROR, WARNING) extrahieren, indem Sie den cut
-Befehl verwenden:
cat ~/project/system.log | cut -d: -f1 | sort | uniq -c
Ausgabe:
2 ERROR
3 INFO
1 WARNING
Diese Analyse zeigt, dass von 6 Protokolleinträgen 3 INFO-Nachrichten, 2 ERROR-Nachrichten und 1 WARNING-Nachricht sind.
Diese Beispiele zeigen, wie die Kombination einfacher Befehle wie sort
, uniq
und cut
leistungsstarke Datenverarbeitungspipelines in Linux erstellen kann.