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 .