Linux uniq-Befehl: Duplikate filtern

LinuxBeginner
Jetzt üben

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:

  • sort ist der Befehl zum Sortieren von Textzeilen.
  • customer_purchases.txt ist 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.txt ist 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:

  • uniq ist das Werkzeug zum Filtern wiederholter Zeilen.
  • sorted_purchases.txt dient als Eingabedatei (die sortierten Daten).
  • unique_purchases.txt ist 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:

  • uniq filtert weiterhin die Zeilen.
  • -c (count) weist uniq an, jeder Zeile die Anzahl ihres Vorkommens voranzustellen.
  • sorted_purchases.txt ist unsere Eingabequelle.
  • purchase_counts.txt ist 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:

  • uniq ist unser Basisbefehl.
  • -d sorgt dafür, dass nur Zeilen ausgegeben werden, die als Duplikate erkannt wurden.
  • sorted_purchases.txt ist die Eingabedatei.
  • repeat_customers.txt speichert 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:

  1. Daten durch Sortieren für die Verwendung mit uniq vorbereiten.
  2. uniq nutzen, um Duplikate aus einer sortierten Datei zu entfernen.
  3. Mit uniq -c die Anzahl der Vorkommen jeder Zeile ermitteln.
  4. Mit uniq -d gezielt 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.