Linux sort-Befehl: Textsortierung

LinuxBeginner
Jetzt üben

Einführung

In diesem Praktikum erkunden Sie den vielseitigen sort-Befehl in Linux, ein leistungsstarkes Werkzeug zum Organisieren und Anordnen von Textdaten. In der Rolle eines Schuladministrators werden Sie verschiedene Optionen des sort-Befehls nutzen, um Schülerinformationen effizient zu verwalten und zu analysieren. Diese praktische Erfahrung wird Ihnen helfen zu verstehen, wie man Daten in realen Szenarien mit Hilfe von Linux-Kommandozeilenwerkzeugen manipuliert.

Grundlegendes Sortieren von Schülernamen

Beginnen wir damit, eine Liste von Schülernamen alphabetisch zu sortieren. Dies ist eine typische Aufgabe beim Erstellen von Klassenlisten oder beim Organisieren von Schülerakten.

Schauen wir uns zunächst den Inhalt unserer Schülerliste an:

cat ~/project/students.txt

Sie sollten eine Liste von Schülernamen in ungeordneter Reihenfolge sehen, ähnlich wie hier:

David Lee
Alice Johnson
Charlie Brown
Bob Smith
Eve Wilson

Nun verwenden wir den sort-Befehl, um diese Namen alphabetisch zu ordnen:

sort ~/project/students.txt

Dieser Befehl zeigt die sortierte Liste der Schülernamen auf Ihrem Bildschirm an. Die Ausgabe sollte so aussehen:

Alice Johnson
Bob Smith
Charlie Brown
David Lee
Eve Wilson

Der sort-Befehl sortiert standardmäßig Zeilen alphabetisch. Er vergleicht die Zeilen Zeichen für Zeichen, beginnend am Anfang jeder Zeile. Deshalb steht "Alice" vor "Bob" und so weiter.

Falls Sie keine Ausgabe sehen, keine Sorge! Der Befehl hat funktioniert, aber er hat das Ergebnis lediglich im Terminal ausgegeben. Wenn Sie die sortierte Liste in einer neuen Datei speichern möchten, können Sie den Umleitungsoperator > verwenden, zum Beispiel so: sort ~/project/students.txt > ~/project/sorted_students.txt

Schüleralter sortieren

Als Nächstes sortieren wir die Schüler nach ihrem Alter. Dies kann nützlich sein, um Schüler in altersgerechte Gruppen oder Aktivitäten einzuteilen.

Betrachten wir zuerst unsere Daten:

cat ~/project/student_ages.txt

Sie sehen eine Liste von Schülern mit ihrem jeweiligen Alter:

David Lee:21
Alice Johnson:18
Charlie Brown:19
Bob Smith:20
Eve Wilson:18

Um diese Liste nach Alter zu sortieren, verwenden wir die Option -n. Diese weist sort an, die Zahlen als numerische Werte und nicht als bloße Zeichenfolgen zu behandeln:

sort -n -t: -k2 ~/project/student_ages.txt

Lassen Sie uns diesen Befehl im Detail betrachten:

  • -n: Diese Option weist sort an, eine numerische Sortierung durchzuführen.
  • -t:: Dies legt fest, dass die Felder durch Doppelpunkte getrennt sind.
  • -k2: Dies weist sort an, das zweite Feld (das Alter) als Sortierschlüssel zu verwenden.

Dadurch wird die Liste der Schüler vom jüngsten zum ältesten sortiert angezeigt:

Alice Johnson:18
Eve Wilson:18
Charlie Brown:19
Bob Smith:20
David Lee:21

Ohne die Option -n würde sort das Alter als Text behandeln, was zu einer falschen Reihenfolge führen könnte (z. B. stünde 18 vor 2, aber nach 111). Die Option -n stellt die korrekte numerische Reihenfolge sicher.

Umgekehrte Sortierung von Schülernoten

Nun sortieren wir die Noten der Schüler in absteigender Reihenfolge. Dies wird häufig verwendet, um Ranglisten zu erstellen oder die besten Leistungen zu identifizieren.

Zuerst schauen wir uns die aktuelle Liste an:

cat ~/project/student_grades.txt

Sie sollten etwas Ähnliches wie das hier sehen:

David Lee:87
Alice Johnson:92
Charlie Brown:95
Bob Smith:88
Eve Wilson:91

Um die Noten von der höchsten zur niedrigsten zu sortieren, verwenden wir die Option -r für die umgekehrte Reihenfolge (reverse) zusammen mit -n für die numerische Sortierung:

sort -nr -t: -k2 ~/project/student_grades.txt

Hier ist die Funktion der einzelnen Bestandteile:

  • -n: Führt eine numerische Sortierung durch.
  • -r: Kehrt die Sortierreihenfolge um (absteigend statt aufsteigend).
  • -t:: Legt fest, dass Felder durch Doppelpunkte getrennt sind.
  • -k2: Verwendet das zweite Feld (die Note) als Sortierschlüssel.

Dieser Befehl zeigt die Schülernoten von der höchsten zur niedrigsten an:

Charlie Brown:95
Alice Johnson:92
Eve Wilson:91
Bob Smith:88
David Lee:87

Die Option -r ist besonders nützlich, wenn Sie die höchsten Werte zuerst sehen möchten, was in vielen praktischen Szenarien wie Rankings, Leistungsanalysen oder der Priorisierung von Aufgaben üblich ist.

Schülerdatensätze nach mehreren Feldern sortieren

In diesem Schritt sortieren wir einen komplexeren Datensatz, der Name, Alter und Note enthält. Dies ist ein häufiges Szenario beim Umgang mit umfassenden Schülerdatenbanken.

Schauen wir uns zuerst die Daten an:

cat ~/project/student_records.txt

Jede Zeile enthält den Namen, das Alter und die Note eines Schülers, getrennt durch Doppelpunkte:

David Lee:21:87
Alice Johnson:18:92
Charlie Brown:19:95
Bob Smith:20:88
Eve Wilson:18:91

Um diese Datei primär nach Alter (zweites Feld) und sekundär nach Note (drittes Feld) zu sortieren (falls das Alter gleich ist), verwenden wir:

sort -t: -k2n -k3nr ~/project/student_records.txt

Das bedeuten die einzelnen Teile des Befehls:

  • -t: legt fest, dass Felder durch Doppelpunkte getrennt sind.
  • -k2n sortiert basierend auf dem zweiten Feld (Alter) numerisch.
  • -k3nr sortiert anschließend basierend auf dem dritten Feld (Note) numerisch und in umgekehrter Reihenfolge.

Dies zeigt die Datensätze primär nach Alter (aufsteigend) und bei gleichem Alter sekundär nach Note (absteigend) sortiert an:

Alice Johnson:18:92
Eve Wilson:18:91
Charlie Brown:19:95
Bob Smith:20:88
David Lee:21:87

Diese Art der Sortierung über mehrere Schlüssel ist extrem nützlich, wenn Sie Daten nach mehreren Kriterien organisieren müssen. In diesem Fall gruppieren wir die Schüler nach Alter und erstellen innerhalb jeder Altersgruppe eine Rangliste nach ihren Noten.

Duplikate entfernen

Manchmal können Schülerdatensätze Duplikate enthalten, etwa durch Eingabefehler oder mehrfache Einreichungen. Wir lernen nun, wie man diese Duplikate entfernt.

Schauen wir uns zunächst eine Datei mit potenziellen Duplikaten an:

cat ~/project/student_clubs.txt

Sie sehen eventuell so etwas:

Alice Johnson:Chess Club
Bob Smith:Debate Team
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
Alice Johnson:Chess Club
Bob Smith:Science Club

Um diese Liste zu sortieren und Duplikate zu entfernen, nutzen wir die Option -u (unique):

sort -u ~/project/student_clubs.txt

Dieser Befehl zeigt eine sortierte Liste der eindeutigen Club-Mitgliedschaften an:

Alice Johnson:Chess Club
Bob Smith:Debate Team
Bob Smith:Science Club
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team

Die Option -u weist sort an, bei identischen Zeilen nur die erste auszugeben. Mit anderen Worten: Doppelte Zeilen werden nach der Sortierung entfernt. Dies ist besonders hilfreich, wenn Sie eine Liste mit eindeutigen Einträgen erstellen oder redundante Daten eliminieren möchten.

Beachten Sie, dass "Bob Smith" zweimal erscheint, da er in zwei verschiedenen Clubs ist – dies wird nicht als Duplikat gewertet, da sich die gesamte Zeile unterscheidet.

Zusammenfassung

In diesem Praktikum haben Sie gelernt, wie Sie den sort-Befehl verwenden, um verschiedene Arten von Schülerdaten zu organisieren. Sie haben mehrere nützliche Optionen kennengelernt:

  • Grundlegende alphabetische Sortierung
  • Numerische Sortierung mit -n
  • Umgekehrte Sortierung mit -r
  • Sortieren nach mehreren Feldern mit -k
  • Verwendung benutzerdefinierter Trennzeichen mit -t
  • Entfernen von Duplikaten mit -u

Weitere nützliche sort-Optionen sind:

  • -f: Ignoriert Groß- und Kleinschreibung beim Sortieren.
  • -b: Ignoriert führende Leerzeichen.
  • -c: Prüft, ob die Eingabe bereits sortiert ist.
  • -o: Schreibt die Ausgabe in eine Datei statt in die Standardausgabe.

Diese Fertigkeiten sind bei der Verwaltung und Analyse von Daten in vielen beruflichen Kontexten von unschätzbarem Wert, nicht nur im Bildungswesen.