GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Sortierungsbefehl mit Beispielen

Einführung

Die sort Der Befehl ist ein Werkzeug zum Sortieren von Dateiinhalten und zum Drucken des Ergebnisses in der Standardausgabe. Den Inhalt einer Datei numerisch oder alphabetisch neu zu ordnen und Informationen in aufsteigender oder absteigender Reihenfolge anzuordnen, verbessert die Lesbarkeit.

In diesem Tutorial lernen Sie, die Linux-sort zu verwenden Befehl und sehen Sie sich nützliche Beispiele an.

Voraussetzungen

  • Ein System, auf dem Linux ausgeführt wird.
  • Zugriff auf ein Terminal.

Linux-Sortierungssyntax

Die sort Befehl hat die folgende Syntax:

sort [options] filename

Ausführen der sort Befehl ohne [options] gibt den Inhalt der Datei aus und wendet die Standard-Sortierregeln für das aktuelle Gebietsschema an.

Die wichtigsten Regeln sind:

  • Zeilen, die mit einer Zahl beginnen gehen Sie vor die Zeilen, die mit einem Buchstaben beginnen , aufsteigend angeordnet Reihenfolge (1-10).
  • Zeilen, die mit Buchstaben beginnen, werden aufsteigend sortiert alphabetische Reihenfolge (A-Z).

Die folgende Datei hat beispielsweise mehrere zufällige Zeilen:

Führen Sie sort aus um den Inhalt der Datei standardmäßig anzuordnen:

Das obige Beispiel zeigt, wie die sort Befehl ordnet Zeilen standardmäßig an, wenn keine Optionen angegeben sind.

Linux-Sortieroptionen

Geben Sie eine Option an, um die sort zu ändern Befehlssortierregeln. Die am häufigsten verwendeten Optionen sind in der folgenden Tabelle aufgeführt:

Kurzes Optionsformular Lange Optionsform Beschreibung
-b --ignore-leading-blanks Verursacht sort um führende Leerzeichen zu ignorieren.
-d --dictionary-order Verursacht sort nur Leerzeichen und alphanumerische Zeichen zu berücksichtigen.
-f --ignore-case Ignoriert die standardmäßige Groß-/Kleinschreibung und ändert alle Kleinbuchstaben vor dem Vergleich in Großbuchstaben.
/ --files0-from=F Liest Eingaben aus den durch NUL angegebenen Dateien -terminierte Namen im angegebenen F Datei. Wenn F ist - , sort liest Namen aus der Standardeingabe.
-M --month-sort Sortiert Zeilen nach Monaten (Jan-Dez).
-h --human-numeric-sort Vergleicht menschenlesbare Zahlen (z. B. 2K 1G).
-n --numeric-sort Vergleicht Daten anhand von numerischen Zeichenfolgenwerten.
-R --random-sort Sortiert Daten nach einem zufälligen Hash von Schlüsseln, gruppiert aber identische Schlüssel zusammen.
/ --random-source=FILE Erhält zufällige Bytes aus der angegebenen FILE .
-r --reverse Kehrt die Vergleichsergebnisse um.
/ --sort=WORD Daten nach dem angegebenen WORD sortieren :allgemein-numerisch -g , menschlich-numerisch -h , Monat -M , numerisch -n , zufälliges -R , Version -V .
-c --check, --check=diagnose-first Überprüft, ob die Eingabe bereits sortiert ist, sortiert sie aber nicht.
/ --debug Kommentiert den Teil der Zeile, der zum Sortieren verwendet wird.
-k --key=KEYDEF Daten anhand des angegebenen KEYDEF sortieren , das die Position und den Typ des Schlüssels angibt.
-m --merge Verursacht sort um bereits sortierte Dateien zusammenzuführen.
-o --output=FILE Leitet die Ausgabe nach FILE um anstatt es in der Standardausgabe auszugeben.
-t --field-separator=SEP Verwendet den angegebenen SEP Trennzeichen statt Nicht-Leerzeichen-zu-Leerzeichen-Übergang.
-z --zero-terminated bewirkt, dass sort NUL verwendet als Zeilentrennzeichen anstelle des Zeilenumbruchzeichens.
/ --help Zeigt die Hilfedatei mit vollständiger Optionsliste und Beenden an.
/ --version Gibt die Programmversion aus und beendet sich.

Linux-Sortierbeispiele

Nachfolgend finden Sie Beispiele für die Verwendung von sort Befehl, um Dateiinhalte auf unterschiedliche Weise anzuordnen.

Beispiel 1:Ausgabe in Datei speichern

Die sort Der Befehl zeigt nur den Inhalt einer Datei an, nachdem er sie angeordnet hat, ändert die Datei jedoch nicht. Das -o Option können Sie die sort speichern Befehlsausgabe in eine Datei.

Beispielsweise sortiert der folgende Befehl die Daten in der default.txt Datei und speichert die Ausgabe in der sorted.txt Datei:

sort -o sorted.txt default.txt

Das Ausführen von cat gibt den Inhalt der neuen Datei aus.

Eine andere Möglichkeit, die sort zu speichern Befehlsausgabe ist, die Ausgabe umzuleiten in eine Datei:

sort default.txt > sorted.txt

Beispiel 2:Auf Sortierung in Datei prüfen

Geben Sie -c an Option, um zu prüfen, ob der Inhalt einer Datei bereits sortiert wurde. Wenn der Inhalt bereits sortiert ist, gibt es keine Ausgabe von sort Befehl.

Wenn jedoch sort eine unsortierte Zeile findet, gibt es eine Meldung aus, dass die erste Zeile falsch ist.

Zum Beispiel:

sort -c default.txt

Der Befehl gibt eine Meldung aus, die die Nummer und den Inhalt der ersten unsortierten Zeile enthält.

Beispiel 3:Mehrere Dateien sortieren

Es gibt zwei Möglichkeiten, mehrere Dateien zu sortieren:

1. Dateinamen als durch Leerzeichen getrennte Argumente auflisten.

Sortieren Sie mehrere Dateien gleichzeitig, indem Sie die jeweiligen Dateinamen als Argumente angeben, getrennt durch Leerzeichen. Die Inhalte der Dateien werden zusammengefügt, sortiert und in der Standardausgabe ausgegeben.

Zum Beispiel:

sort default1.txt default2.txt

Der Befehl verkettet, sortiert und gibt den Inhalt beider Dateien aus.

2. Leiten Sie find Befehlsausgabe zu sort .

Eine andere Möglichkeit, mehrere Dateien gleichzeitig zu sortieren, besteht darin, die Ausgabe des find-Befehls an sort weiterzuleiten und verwenden Sie --files0-from= Option in der sort Befehl.

Geben Sie -print0 an Option in find um den Dateinamen mit NUL zu beenden Zeichen und stellen Sie sicher, dass das Programm die Dateiliste richtig liest.

Zum Beispiel:

find -name "default?.txt" -print0 | sort --files0-from=-

Das obige Beispiel verkettet und sortiert die default1.txt und default2.txt Dateien.

Beispiel 4:Sortieren nach Feldern

Standardmäßig sort vergleicht den Inhalt der gesamten Zeile und entscheidet, wie er sortiert wird. Um nach einer Datenuntermenge zu vergleichen, geben Sie mit -k an, welche Felder verglichen werden sollen Option.

Das -k Option nimmt die folgende Syntax an:

-k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .Cend ] ][ Modifier ] ]
  • FStart . Der Zeilenanfang.
  • CStart . Die erste Spalte im Feld.
  • Fend . Das Ende der Zeile.
  • CEnd . Die letzte Spalte des Feldes.

Der Sortierschlüssel enthält alle Zeichen, die mit dem durch FStart angegebenen Feld beginnen -Variable und die durch CStart angegebene Spalte Variable. Der Schlüssel endet mit dem durch FEnd angegebenen Feld und die durch CEnd angegebene Spalte .

Fend nicht angeben nimmt das letzte Zeichen der Zeile als Ende an. Ohne Angabe von CEnd , das letzte Zeichen im FEnd Feld wird angenommen.

Wenn sich zwischen den Feldern Leerzeichen befinden, sort betrachtet sie als separate Felder.

Beispielsweise enthalten die Zeilen in der folgenden Datei drei Felder:

Sortieren Sie die Daten basierend auf dem zweiten Feld, indem Sie Folgendes ausführen:

sort -k 2,2 school.txt

Der Befehl sortiert die Daten nach dem zweiten Feld und ignoriert das erste Feld.

Beispiel 5:Sortieren in umgekehrter Reihenfolge

Verwenden Sie das -r Option zum Sortieren der Daten in umgekehrter Reihenfolge, d. h. in umgekehrter alphabetischer Reihenfolge oder von der höchsten zur niedrigsten Nummer.

Die folgende Datei wird beispielsweise mit den Standardsortierregeln sortiert:

sort default.txt

Angabe von -r Option kehrt die Sortierreihenfolge um:

sort -r default.txt

Beispiel 6:Doppelte Einträge entfernen

Das -u Option erlaubt sort um doppelte Einträge aus einer Datei zu entfernen. Die folgende Datei hat beispielsweise mehrere doppelte Einträge:

Angabe von -u Option sortiert die Daten und entfernt die doppelten Zeilen:

sort -u test.txt

Beispiel 7:Nach Monaten sortieren

Geben Sie -M an Möglichkeit, Daten nach Monaten in einer Datei zu ordnen.

Um das Sortieren nach Monaten zu demonstrieren, erstellen Sie eine Datei, die mit der Ausgabe des Befehls ls gefüllt ist:

ls -l > month-sorting.txt

Sortieren Sie die Daten aus ls -l Ausgabe nach Monaten, indem Sie den folgenden Befehl ausführen:

sort -Mk6 month-sorting.txt

Der Befehl sortiert den Dateiinhalt basierend auf dem sechsten Feld enthält den Monat der Dateierstellung .

Beispiel 8:Daten zufällig sortieren

Verwenden Sie das -R Option zum zufälligen Anordnen von Daten ohne Anwendung von Sortierkriterien.

Die folgende Datei enthält beispielsweise mehrere Zeilen, die numerisch sortiert sind:

Mischen Sie die Zeilenreihenfolge mit dem folgenden Befehl:

sort -R ordered.txt

Die Ausgabe zeigt, dass die Daten jetzt zufällig sortiert sind.

Beispiel 9:Geben Sie ein Trennzeichen an

sort trennt Felder in einer Zeile mit Leerzeichen (Leerzeichen oder Tabulatoren) als Feldtrenner. Geben Sie -t an Option zum Ändern des Feldtrennzeichens in ein anderes Zeichen.

Die folgende Datei enthält beispielsweise mehrere Felder, darunter den Namen, die Berufsbezeichnung und den Wohnort einer Person:

Das Sortieren der Datei nach Wohnort ohne Änderung des Trennzeichens funktioniert nicht weil einige Städte ein Leerzeichen in der Mitte ihres Namens haben. Das Leerzeichen macht sort interpretieren Sie den Städtenamen als zwei Felder anstelle von einem.

Ändern Sie das Trennzeichen in ein Komma (, ), um den Inhalt der Datei richtig zu sortieren:

sort -t, -k4 school.txt

Das Ändern des Trennzeichens erzeugt die gewünschte Ausgabe.

Beispiel 10:Stream-Ausgabe sortieren

Eine andere Möglichkeit, Eingaben für sort bereitzustellen Befehl ist die Verwendung der Pipe (| ) Operator. Weiterleiten an sort ermöglicht es, die Ausgabe eines anderen Befehls zu arrangieren und optional die Ergebnisse in einer Datei zu speichern.

Das folgende Beispiel zeigt, wie der ls über eine Pipe geleitet wird Befehlsausgabe in sort und den Inhalt nach Dateigröße anordnen:

ls -l /home/$USER | sort -nk5

Der -nk5 Optionen geben numerische Sortierung im fünften Feld an .


Linux
  1. wc Linux-Befehl mit Beispielen

  2. Linux Tee-Befehl mit Beispielen

  3. Linux-Kopfbefehl mit Beispielen

  4. Sortierbefehl in Linux mit Beispielen

  5. JQ-Befehl in Linux mit Beispielen

Linux-CD-Befehl mit Beispielen

Linux-Uhrbefehl mit Beispielen

Wartebefehl in Linux mit Beispielen

Linux-Exportbefehl mit Beispielen

Sortierbefehl in Linux mit Beispielen

Linux-IP-Befehl mit Beispielen