Linux uniq-Befehl: Doppelte Einträge filtern

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir den uniq-Befehl in Linux erkunden, ein leistungsstarkes Werkzeug zur Identifizierung und Filterung doppelter Zeilen in Textdateien. Wir verwenden ein Szenario, in dem Sie als Datenanalyst bei einem E-Commerce-Unternehmen tätig sind und die Aufgabe haben, Kundenkaufdaten zu analysieren. Der uniq-Befehl wird Ihnen helfen, diese Daten effizient zu verarbeiten und wertvolle Einblicke in das Kundenverhalten zu gewinnen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/sort("Text Sorting") linux/TextProcessingGroup -.-> linux/uniq("Duplicate Filtering") subgraph Lab Skills linux/cat -.-> lab-219199{{"Linux uniq-Befehl: Doppelte Einträge filtern"}} linux/cd -.-> lab-219199{{"Linux uniq-Befehl: Doppelte Einträge filtern"}} linux/sort -.-> lab-219199{{"Linux uniq-Befehl: Doppelte Einträge filtern"}} linux/uniq -.-> lab-219199{{"Linux uniq-Befehl: Doppelte Einträge filtern"}} end

Untersuchung der Rohdaten der Kunden

Beginnen wir mit der Untersuchung unserer Rohdaten zu den Kundenkäufen. Diese Daten repräsentieren die täglichen Käufe der Kunden.

Zunächst müssen wir in das Projektverzeichnis wechseln. In Linux verwenden wir den cd-Befehl, um Verzeichnisse zu ändern. Das Tilde-Zeichen (~) ist eine Abkürzung, die Ihr Home-Verzeichnis darstellt.

cd ~/project

Dieser Befehl wechselt unser aktuelles Arbeitsverzeichnis zu /home/labex/project. Jetzt, da wir im richtigen Verzeichnis sind, lassen Sie uns den Inhalt unserer Kundendatei anzeigen. Wir verwenden den cat-Befehl, der kurz für "concatenate" (zusammenfügen) steht. Er wird üblicherweise verwendet, um den Inhalt von Dateien anzuzeigen.

cat customer_purchases.txt

Sie sollten eine Ausgabe ähnlich dieser sehen:

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 die Namen der Kunden und ihre Käufe, wobei einige Kunden mehrere Käufe getätigt haben. Jede Zeile repräsentiert einen einzelnen Kauf, wobei der Name des Kunden gefolgt von der Kategorie des gekauften Artikels steht, getrennt durch ein Komma.

Sortieren der Daten

Bevor wir den uniq-Befehl effektiv nutzen können, müssen wir unsere Daten sortieren. Der uniq-Befehl arbeitet mit benachbarten doppelten Zeilen, daher stellt das Sortieren sicher, dass alle doppelten Einträge nebeneinander liegen.

Wir verwenden den sort-Befehl, um unsere Kundendaten alphabetisch zu sortieren:

sort customer_purchases.txt > sorted_purchases.txt

Lassen Sie uns diesen Befehl zerlegen:

  • sort ist der Befehl zum Sortieren von Textzeilen.
  • customer_purchases.txt ist die Eingabedatei, die wir sortieren.
  • > ist ein Umleitungsoperator. Er nimmt die Ausgabe des Befehls auf seiner linken Seite und schreibt sie in die Datei auf seiner rechten Seite.
  • sorted_purchases.txt ist die neue Datei, in der wir die sortierten Daten speichern.

Jetzt lassen Sie uns den Inhalt der sortierten Datei anzeigen:

cat sorted_purchases.txt

Sie sollten eine Ausgabe ähnlich dieser sehen:

Alice,Electronics
Alice,Electronics
Alice,Electronics
Bob,Books
Bob,Books
Charlie,Clothing
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

Beachten Sie, wie die Einträge jetzt alphabetisch nach Kundenname sortiert sind. Diese alphabetische Sortierung bringt alle Käufe desselben Kunden zusammen, was für die nächsten Schritte von entscheidender Bedeutung ist.

Verwenden von uniq zum Entfernen doppelter Einträge

Jetzt, da unsere Daten sortiert sind, können wir den uniq-Befehl verwenden, um doppelte Einträge zu entfernen. Dies gibt uns eine Liste der einzigartigen Kundenkäufe.

Führen Sie den folgenden Befehl aus:

uniq sorted_purchases.txt unique_purchases.txt

Lassen Sie uns diesen Befehl zerlegen:

  • uniq ist der Befehl, um wiederholte Zeilen in einer Datei zu filtern.
  • sorted_purchases.txt ist unsere Eingabedatei (die sortierten Daten).
  • unique_purchases.txt ist die Ausgabedatei, in der wir die Ergebnisse speichern.

Der uniq-Befehl liest die sortierten Daten aus sorted_purchases.txt, entfernt benachbarte doppelte Zeilen und speichert das Ergebnis in einer neuen Datei namens unique_purchases.txt.

Jetzt lassen Sie uns den Inhalt der neuen Datei anzeigen:

cat unique_purchases.txt

Sie sollten eine Ausgabe ähnlich dieser sehen:

Alice,Electronics
Bob,Books
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

Jetzt haben wir eine Liste der einzigartigen Kundenkäufe, wobei jeder Kunde nur einmal erscheint. Dies gibt uns einen klaren Überblick über die verschiedenen Kaufarten ohne Wiederholungen.

Zählen von Käufen mit uniq -c

Der uniq-Befehl wird noch leistungsstärker, wenn wir seine Optionen nutzen. Lassen Sie uns die -c-Option verwenden, um zu zählen, wie oft jeder Kunde einen Kauf getätigt hat.

Führen Sie den folgenden Befehl aus:

uniq -c sorted_purchases.txt purchase_counts.txt

Lassen Sie uns diesen Befehl zerlegen:

  • uniq ist unser Befehl zum Filtern wiederholter Zeilen.
  • -c ist eine Option, die uniq anweist, die Zeilen mit der Anzahl der Vorkommen zu versehen.
  • sorted_purchases.txt ist unsere Eingabedatei.
  • purchase_counts.txt ist die Ausgabedatei, in der wir die Ergebnisse speichern.

Dieser Befehl zählt die Anzahl der Vorkommen jeder einzigartigen Zeile und speichert das Ergebnis in purchase_counts.txt.

Jetzt lassen Sie uns den Inhalt dieser neuen Datei anzeigen:

cat purchase_counts.txt

Sie sollten eine Ausgabe ähnlich dieser sehen:

   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 gibt an, wie oft der Kunde einen Kauf getätigt hat. Beispielsweise hat Alice 3 Mal Elektronikartikel gekauft, während Frank 1 Mal Sportartikel gekauft hat.

Finden von wiederkehrenden Kunden mit uniq -d

Als Datenanalyst/in interessieren Sie sich möglicherweise für die Identifizierung von wiederkehrenden Kunden. Wir können die -d-Option des uniq-Befehls verwenden, um nur die doppelten Zeilen anzuzeigen, die Kunden repräsentieren, die mehrere Käufe getätigt haben.

Führen Sie den folgenden Befehl aus:

uniq -d sorted_purchases.txt repeat_customers.txt

Lassen Sie uns diesen Befehl zerlegen:

  • uniq ist unser Befehl zum Filtern wiederholter Zeilen.
  • -d ist eine Option, die uniq anweist, nur doppelte Zeilen auszugeben.
  • sorted_purchases.txt ist unsere Eingabedatei.
  • repeat_customers.txt ist die Ausgabedatei, in der wir die Ergebnisse speichern.

Dieser Befehl identifiziert doppelte Zeilen in sorted_purchases.txt und speichert sie in repeat_customers.txt.

Lassen Sie uns den Inhalt dieser neuen Datei anzeigen:

cat repeat_customers.txt

Sie sollten eine Ausgabe ähnlich dieser sehen:

Alice,Electronics
Bob,Books
Charlie,Clothing

Dies sind die Kunden, die mehr als einen Kauf getätigt haben. Diese Informationen können für Kundenloyalitätsprogramme oder zielgerichtete Marketingkampagnen wertvoll sein.

Zusammenfassung

In diesem Lab haben wir den uniq-Befehl in Linux und seine Anwendung bei der Analyse von Kundenkaufdaten untersucht. Wir haben gelernt, wie man:

  1. Daten für die Verwendung mit uniq vorbereitet, indem man sie zuerst sortiert.
  2. uniq verwendet, um doppelte Einträge aus einer sortierten Datei zu entfernen.
  3. uniq -c verwendet, um die Anzahl der Vorkommen jeder einzigartigen Zeile zu zählen.
  4. uniq -d verwendet, um doppelte Zeilen zu identifizieren.

Diese Fähigkeiten sind für Datenanalyseaufgaben wertvoll und helfen Ihnen, große Datensätze effizient zu verarbeiten und Erkenntnisse daraus zu gewinnen.

Zusätzliche uniq-Befehlsoptionen, die in diesem Lab nicht behandelt wurden, umfassen:

  • -u: Zeigt nur einzigartige Zeilen an (Zeilen, die genau einmal auftreten)
  • -i: Ignoriert die Groß- und Kleinschreibung beim Vergleich von Zeilen
  • -f N: Überspringt die ersten N Felder beim Vergleich von Zeilen
  • -s N: Überspringt die ersten N Zeichen beim Vergleich von Zeilen

Ressourcen