Einführung
In diesem Praktikum werden wir uns mit dem Linux-Befehl uniq vertraut machen – einem leistungsstarken Werkzeug zum Identifizieren und Filtern von doppelten Zeilen in Textdateien. Wir nutzen hierfür ein praxisnahes Szenario: Sie arbeiten als Datenanalyst bei einem E-Commerce-Unternehmen und haben den Auftrag, Kundenkaufdaten auszuwerten. Der uniq-Befehl hilft Ihnen dabei, diese Daten effizient aufzubereiten und wertvolle Erkenntnisse über das Kundenverhalten zu gewinnen.
Untersuchung der Rohdaten
Beginnen wir damit, unsere Rohdaten der Kundenkäufe zu sichten. Diese Daten spiegeln die täglichen Transaktionen wider.
Zuerst navigieren wir in das Projektverzeichnis. Unter Linux verwenden wir den Befehl cd, um das Verzeichnis zu wechseln. Die Tilde (~) ist dabei ein Kürzel für Ihr persönliches Benutzerverzeichnis (Home-Verzeichnis).
cd ~/project
Dieser Befehl setzt unser aktuelles Arbeitsverzeichnis auf /home/labex/project. Da wir uns nun am richtigen Ort befinden, schauen wir uns den Inhalt der Datei mit den Kundendaten an. Hierfür nutzen wir den Befehl cat (kurz für "concatenate"), der standardmäßig dazu verwendet wird, Dateiinhalte im Terminal auszugeben.
cat customer_purchases.txt
Die Ausgabe sollte in etwa so aussehen:
Alice,Electronics
Bob,Books
Charlie,Clothing
Alice,Electronics
David,Home Goods
Bob,Books
Eve,Toys
Charlie,Clothing
Frank,Sports
Alice,Electronics
Diese Datei enthält Kundennamen und die zugehörigen Käufe. Man sieht direkt, dass einige Kunden mehrfach eingekauft haben. Jede Zeile stellt eine einzelne Transaktion dar, wobei der Name und die Produktkategorie durch ein Komma getrennt sind.
Sortieren der Daten
Bevor wir den uniq-Befehl effektiv einsetzen können, müssen wir die Daten sortieren. Das liegt daran, dass uniq nur unmittelbar aufeinanderfolgende Zeilen vergleicht. Durch das Sortieren stellen wir sicher, dass alle identischen Einträge direkt untereinander stehen.
Wir nutzen den Befehl sort, um die Kundendaten alphabetisch zu ordnen:
sort customer_purchases.txt > sorted_purchases.txt
Hier ist die Erklärung der einzelnen Bestandteile:
sortist der Befehl zum Sortieren von Textzeilen.customer_purchases.txtist die Quelldatei, die wir sortieren möchten.>ist ein Umleitungsoperator. Er nimmt die Ausgabe des links stehenden Befehls und schreibt sie in die rechts angegebene Datei.sorted_purchases.txtist die neue Datei, in der wir die sortierten Daten speichern.
Schauen wir uns nun das Ergebnis in der sortierten Datei an:
cat sorted_purchases.txt
Die Ausgabe sollte nun so aussehen:
Alice,Electronics
Alice,Electronics
Alice,Electronics
Bob,Books
Bob,Books
Charlie,Clothing
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports
Beachten Sie, dass die Einträge jetzt alphabetisch nach Kundennamen sortiert sind. Dadurch sind alle Käufe desselben Kunden gruppiert, was die Voraussetzung für die nächsten Schritte ist.
Duplikate mit uniq entfernen
Da unsere Daten nun sortiert sind, können wir uniq verwenden, um doppelte Einträge zu entfernen. So erhalten wir eine Liste der eindeutigen Kundenkäufe.
Führen Sie folgenden Befehl aus:
uniq sorted_purchases.txt unique_purchases.txt
Die Details zum Befehl:
uniqist das Werkzeug zum Filtern wiederholter Zeilen.sorted_purchases.txtdient als Eingabedatei (die sortierten Daten).unique_purchases.txtist die Zieldatei für unsere Ergebnisse.
Der Befehl uniq liest die sortierten Daten, entfernt aufeinanderfolgende Duplikate und speichert das Ergebnis in der neuen Datei unique_purchases.txt.
Prüfen wir den Inhalt der neuen Datei:
cat unique_purchases.txt
Die Ausgabe sollte nun so aussehen:
Alice,Electronics
Bob,Books
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports
Jetzt haben wir eine bereinigte Liste, in der jeder Kunde nur noch einmal aufgeführt ist. Dies gibt uns einen klaren Überblick über die verschiedenen getätigten Käufe ohne unnötige Wiederholungen.
Käufe zählen mit uniq -c
Seine volle Stärke entfaltet der uniq-Befehl durch zusätzliche Optionen. Mit der Option -c können wir zählen, wie oft jeder Kunde eingekauft hat.
Geben Sie folgenden Befehl ein:
uniq -c sorted_purchases.txt purchase_counts.txt
Die Erklärung dazu:
uniqfiltert weiterhin die Zeilen.-c(count) weistuniqan, jeder Zeile die Anzahl ihres Vorkommens voranzustellen.sorted_purchases.txtist unsere Eingabequelle.purchase_counts.txtist die Datei, in der die Zählergebnisse gespeichert werden.
Dieser Befehl ermittelt die Häufigkeit jeder eindeutigen Zeile. Schauen wir uns das Ergebnis an:
cat purchase_counts.txt
Die Ausgabe sollte wie folgt aussehen:
3 Alice,Electronics
2 Bob,Books
2 Charlie,Clothing
1 David,Home Goods
1 Eve,Toys
1 Frank,Sports
Die Zahl am Anfang jeder Zeile verrät uns die Anzahl der Käufe. Alice hat beispielsweise 3 Mal Elektronikartikel gekauft, während Frank nur 1 Mal im Bereich Sport eingekauft hat.
Stammkunden finden mit uniq -d
Als Datenanalyst sind Sie besonders an Kunden interessiert, die wiederholt einkaufen. Mit der Option -d (duplicates) des uniq-Befehls können wir uns ausschließlich die Zeilen anzeigen lassen, die mehrfach vorkommen.
Nutzen Sie diesen Befehl:
uniq -d sorted_purchases.txt repeat_customers.txt
Die Bestandteile:
uniqist unser Basisbefehl.-dsorgt dafür, dass nur Zeilen ausgegeben werden, die als Duplikate erkannt wurden.sorted_purchases.txtist die Eingabedatei.repeat_customers.txtspeichert die Liste der Mehrfachkäufer.
Dieser Befehl identifiziert alle Kunden, die mehr als einmal in der Liste auftauchen. Betrachten wir das Ergebnis:
cat repeat_customers.txt
Die Ausgabe sollte so aussehen:
Alice,Electronics
Bob,Books
Charlie,Clothing
Dies sind unsere Stammkunden. Solche Informationen sind extrem wertvoll für Kundenbindungsprogramme oder gezielte Marketingkampagnen.
Zusammenfassung
In diesem Praktikum haben wir den Linux-Befehl uniq kennengelernt und ihn zur Analyse von Kundenkaufdaten eingesetzt. Wir haben folgende Schritte gemeistert:
- Daten durch Sortieren für die Verwendung mit
uniqvorbereiten. uniqnutzen, um Duplikate aus einer sortierten Datei zu entfernen.- Mit
uniq -cdie Anzahl der Vorkommen jeder Zeile ermitteln. - Mit
uniq -dgezielt doppelte Einträge identifizieren.
Diese Fertigkeiten sind essenziell für die Datenanalyse und helfen Ihnen, große Datensätze effizient zu verarbeiten und wertvolle Informationen zu extrahieren.
Weitere nützliche Optionen von uniq, die wir hier nicht behandelt haben, sind:
-u: Zeigt nur die Zeilen an, die wirklich einzigartig sind (also genau einmal vorkommen).-i: Ignoriert Groß- und Kleinschreibung beim Vergleich.-f N: Überspringt die ersten N Felder beim Vergleich.-s N: Überspringt die ersten N Zeichen beim Vergleich.



