Linux-Systeme stellen sort
Befehle zum Sortieren von Textdateien bereit. sort
Befehle können nach Zeile, Feld oder Nummer sortiert werden und unterstützen verschiedene Sortieroptionen, um unterschiedlichen Sortieranforderungen gerecht zu werden.
Grundlegende Syntax und Optionen
sort
Die grundlegende Syntax des Befehls lautet wie folgt:
sort [选项] [文件]
Zu den gängigen Optionen gehören:
-r
: Sortierung in umgekehrter Reihenfolge (absteigend).-n
: Nach Wert sortieren.-k 字段
: Nach dem angegebenen Feld sortieren. Dieser Parameter kann mehrere durch Kommas getrennte Felder angeben. Das Standardfeldtrennzeichen ist Tabulator oder Leerzeichen.-t 分隔符
: Gibt das Trennzeichen für das Feld an.-u
: Doppelte Zeilen entfernen und nur das erste Vorkommen beibehalten.-f
: Unabhängig von der Groß-/Kleinschreibung sortieren.-b
: Leerzeichen am Anfang der Zeile werden beim Sortieren ignoriert.-c
: Überprüfen Sie, ob die Datei sortiert wurde. Wenn nicht, wird die erste Zeile ausgegeben, die nicht mit der Sortierreihenfolge übereinstimmt.-f
: Unabhängig von der Groß-/Kleinschreibung sortieren. Bei der Sortierung wird beispielsweisesort -f file.txt
die Groß-/Kleinschreibung des ersten Buchstabens einer Zeile ignoriert.-b
: Leerzeichen am Anfang der Zeile werden beim Sortieren ignoriert.-c
: Überprüfen Sie, ob die Datei sortiert wurde. Wenn nicht, wird die erste Zeile ausgegeben, die nicht mit der Sortierreihenfolge übereinstimmt.
nach Zeile sortieren
sort
Der Befehl sortiert jede Zeile standardmäßig lexikografisch. Angenommen, Sie haben eine file.txt
Textdatei mit dem folgenden Inhalt:
apple
banana
cherry
Um die Dateien alphabetisch zu sortieren, können Sie den folgenden Befehl ausführen:
sort file.txt
Das Ergebnis der Operation ist wie folgt:
apple
banana
cherry
nach Feld sortieren
Normalerweise enthält jede Zeile einer Textdatei mehrere Felder, die durch Trennzeichen (z. B. Tabulatoren oder Leerzeichen) getrennt sind. sort
Befehle können nach angegebenen Feldern sortiert werden.
Angenommen, es gibt eine data.txt
Textdatei mit dem folgenden Inhalt:
Tom 25 Male
Jerry 22 Female
Alice 27 Female
Um nach dem zweiten Feld (Alter) zu sortieren, können Sie mit -k
der Option das zu sortierende Feld und -t
das Trennzeichen für das Feld (hier ein Leerzeichen) mit der Option angeben:
sort -k 2 -t ' ' data.txt
Das Ergebnis der Operation ist wie folgt:
Jerry 22 Female
Tom 25 Male
Alice 27 Female
numerische Ordnung
Standardmäßig sort
sortiert der Befehl Zahlen lexikografisch. Wenn Sie nach numerischem Wert sortieren müssen, können Sie -n
die Option verwenden.
Angenommen, es gibt eine numbers.txt
Textdatei mit dem folgenden Inhalt:
10
2
100
50
Um numerisch zu sortieren, können Sie den folgenden Befehl ausführen:
sort -n numbers.txt
Das Ergebnis der Operation ist wie folgt:
2
10
50
100
umgekehrte Reihenfolge
Standardmäßig sort
werden Befehle in aufsteigender Reihenfolge (vom kleinsten zum größten) sortiert. Wenn Sie in absteigender Reihenfolge (vom Größten zum Kleinsten) sortieren müssen, können Sie -r
diese Option verwenden.
Um mit numbers.txt
der Datei als Beispiel fortzufahren und in umgekehrter Reihenfolge zu sortieren, können Sie den folgenden Befehl ausführen:
sort -n -r numbers.txt
Das Ergebnis der Operation ist wie folgt:
100
50
10
2
Entfernen Sie doppelte Zeilen
sort
Der Befehl kann auch verwendet werden, um doppelte Zeilen in einer Textdatei zu entfernen und nur das erste Vorkommen beizubehalten. Dies wird mit -u
der Option erreicht.
Angenommen, es gibt eine names.txt
Textdatei mit dem folgenden Inhalt:
Tom
Jerry
Tom
Alice
Jerry
Um doppelte Zeilen zu entfernen, können Sie den folgenden Befehl ausführen:
sort -u names.txt
Das Ergebnis der Operation ist wie folgt:
Alice
Jerry
Tom
Sortieren Sie nach mehreren Feldern
sort
Der Befehl unterstützt das Sortieren nach mehreren Feldern. -k
Zur Angabe der zu sortierenden Felder und der Sortierreihenfolge können mehrere Optionen verwendet werden. Angenommen, Sie haben eine data.txt
Textdatei mit dem folgenden Inhalt:
Tom 25 Male
Jerry 22 Female
Alice 27 Female
Um nach Geschlecht (drittes Feld) in absteigender Reihenfolge und dann nach Alter (zweites Feld) in aufsteigender Reihenfolge zu sortieren, können Sie den folgenden Befehl ausführen:
sort -k 3r -k 2n data.txt
Das Ergebnis der Operation ist wie folgt:
Alice 27 Female
Jerry 22 Female
Tom 25 Male
Hier gibt „use -k 3r
“ an, dass in absteigender Reihenfolge nach dem dritten Feld sortiert werden soll ( r
gibt die umgekehrte Reihenfolge an), und verwendet dann -k 2n
, um anzugeben, dass in aufsteigender Reihenfolge nach dem zweiten Feld sortiert werden soll ( n
gibt an, dass nach Wert sortiert werden soll).
ignoriere führende Zeichen
Manchmal kann jede Zeile einer Textdatei einige führende Zeichen wie Leerzeichen oder Tabulatoren enthalten. Wenn Sie diese führenden Zeichen beim Sortieren ignorieren möchten, können Sie -b
die Option verwenden. Angenommen, Sie haben eine file.txt
Textdatei mit dem folgenden Inhalt:
apple
banana
cherry
Um führende Leerzeichen und Tabulatoren beim Sortieren zu ignorieren, können Sie den folgenden Befehl ausführen:
sort -b file.txt
Das Ergebnis der Operation ist wie folgt:
apple
banana
cherry
Mehrere Dateien sortiert zusammenführen
sort
Command kann auch mehrere Dateien zusammenführen und sortieren. Listen Sie einfach die zu sortierenden Dateinamen einzeln auf. Angenommen, es gibt zwei Dateien file1.txt
und file2.txt
der Inhalt lautet wie folgt:
=== file1.txt ===
apple
cherry
=== file2.txt ===
banana
orange
Um zwei Dateien zu kombinieren und lexikografisch zu sortieren, können Sie den folgenden Befehl ausführen:
sort file1.txt file2.txt
Das Ergebnis der Operation ist wie folgt:
apple
banana
cherry
orange
Das Ergebnis der Zusammenführung ist die Sortierung der Inhalte beider Dateien als Ganzes.
Sortieren Sie die aus der Standardeingabe gelesenen Daten
Zusätzlich zum Lesen von Daten aus Dateien sort
können Befehle auch Daten aus der Standardeingabe lesen und sortieren. Dies lässt sich bequem mit anderen Befehlen kombinieren. Um beispielsweise eine Reihe von Zahlen zu sortieren, können Sie diese an sort
den Befehl weiterleiten. Zum Beispiel:
echo -e "3\n1\n2" | sort -n
Das Ergebnis der Operation ist wie folgt:
1
2
3
Hier echo
wird der Befehl zum Generieren einer Reihe von Zahlen verwendet und zur Sortierung an den Befehl |
weitergeleitet .sort