Der Sortierbefehl ist hilfreich, um Zeilen in Textdateien zu sortieren/anzuordnen. Sie können die Daten in einer Textdatei sortieren und die Ausgabe auf dem Bildschirm anzeigen oder in eine Datei umleiten. Basierend auf Ihren Anforderungen bietet sort mehrere Befehlszeilenoptionen zum Sortieren von Daten in einer Textdatei.
Sortierungsbefehlssyntax:
$ sort [-options]
Hier ist zum Beispiel eine Testdatei:
$ cat test zzz sss qqq aaa BBB ddd AAA
Und hier ist, was Sie erhalten, wenn der Sortierbefehl für diese Datei ohne Option ausgeführt wird. Es sortiert die Zeilen in der Testdatei und zeigt die sortierte Ausgabe an.
$ sort test aaa AAA BBB ddd qqq sss zzz
1. Führen Sie eine numerische Sortierung mit der Option -n durch
Wenn wir nach numerischen Werten sortieren möchten, können wir -n verwenden oder –numeric-sort Option.
Erstellen Sie für dieses Beispiel die folgende Testdatei:
$ cat test 22 zzz 33 sss 11 qqq 77 aaa 55 BBB
Der folgende sort-Befehl sortiert die Zeilen in der Testdatei nach dem numerischen Wert im ersten Wort der Zeile und zeigt die sortierte Ausgabe an.
$ sort -n test 11 qqq 22 zzz 33 sss 55 BBB 77 aaa
2. Sortieren Sie menschenlesbare Zahlen mit der Option -h
Wenn wir nach menschenlesbaren Zahlen sortieren möchten (z. B. 2K 1M 1G), können wir -h verwenden oder –human-numeric-sort Option.
Erstellen Sie für dieses Beispiel die folgende Testdatei:
$ cat test 2K 2G 1K 6T 1T 1G 2M
Der folgende Sortierbefehl sortiert menschenlesbare Zahlen (z. B. 1K =1 Tausend, 1M =1 Million, 1G =1 Giga, 1T =1 Tera) in der Testdatei und zeigt die sortierte Ausgabe an.
$ sort -h test 1K 2K 2M 1G 2G 1T 6T
3. Sortieren Sie die Monate eines Jahres mit der Option -M
Wenn wir nach Monaten des Jahres sortieren wollen, können wir -M verwenden oder –month-sort Option.
Erstellen Sie für dieses Beispiel die folgende Testdatei:
$ cat test sept aug jan oct apr feb mar11
Der folgende sort-Befehl sortiert Zeilen in der Testdatei nach Monatsreihenfolge. Beachten Sie, dass die Zeilen in der Datei am Anfang der Zeile mindestens 3 Zeichen des Monatsnamens enthalten sollten (z. B. Jan, Feb, Mär). Wenn wir ja für Januar oder au für August angeben, würde der Sortierbefehl dies nicht als Monatsnamen betrachten.
$ sort -M test jan feb mar11 apr aug sept oct
4. Überprüfen Sie, ob der Inhalt bereits sortiert ist, indem Sie die Option -c verwenden
Wenn wir überprüfen möchten, ob die Daten in der Textdatei sortiert sind oder nicht, können wir -c verwenden oder –check, –check=diagnose-first Option.
Erstellen Sie für dieses Beispiel die folgende Testdatei:
$ cat test 2 5 1 6
Der folgende Sortierbefehl prüft, ob Textdateidaten sortiert sind oder nicht. Wenn dies nicht der Fall ist, wird das erste Vorkommen mit Zeilennummer und ungeordnetem Wert angezeigt.
$ sort -c test sort: test:3: disorder: 1
5. Kehren Sie die Ausgabe um und prüfen Sie sie auf Eindeutigkeit mit den Optionen -r und -u
Wenn wir eine sortierte Ausgabe in umgekehrter Reihenfolge erhalten möchten, können wir -r verwenden oder –rückwärts Möglichkeit. Wenn die Datei doppelte Zeilen enthält, kann die Option „-u“ verwendet werden, um eindeutige Zeilen in der sortierten Ausgabe zu erhalten.
Erstellen Sie für dieses Beispiel die folgende Testdatei:
$ cat test 5 2 2 1 4 4
Der folgende sort-Befehl sortiert die Zeilen in der Testdatei in umgekehrter Reihenfolge und zeigt die sortierte Ausgabe an.
$ sort -r test 5 4 4 2 2 1
Der folgende Sortierbefehl sortiert Zeilen in der Testdatei in umgekehrter Reihenfolge und entfernt doppelte Zeilen aus der sortierten Ausgabe.
$ sort -r -u test 5 4 2 1
6. Sortieren Sie den Inhalt selektiv, passen Sie das Trennzeichen an, schreiben Sie die Ausgabe in eine Datei mit den Optionen -k, -t, -o
Wenn wir nach der Spalten- oder Wortposition in Zeilen der Textdatei sortieren möchten, kann die Option „-k“ verwendet werden. Wenn wir jedes Wort in jeder Dateizeile durch ein Trennzeichen außer „Leerzeichen“ trennen, können wir das Trennzeichen mit der Option „-t“ angeben. Wir können eine sortierte Ausgabe in jeder angegebenen Ausgabedatei (mit der Option „-o“) erhalten, anstatt die Ausgabe auf der Standardausgabe anzuzeigen.
Erstellen Sie für dieses Beispiel die folgende Testdatei:
$ cat test aa aa zz aa aa ff aa aa tt aa aa kk
Der folgende sort-Befehl sortiert die Zeilen in der Testdatei nach dem 3. Wort jeder Zeile und zeigt die sortierte Ausgabe an.
$ sort -k3 test aa aa ff aa aa kk aa aa tt aa aa zz
$ cat test aa|5a|zz aa|2a|ff aa|1a|tt aa|3a|kk
Hier kommen insgesamt mehrere Optionen zum Einsatz. In der Testdatei werden die Wörter in jeder Zeile durch das Trennzeichen „|“ getrennt. Es sortiert die Zeilen in der Testdatei nach dem 2. Wort jeder Zeile auf der Grundlage des numerischen Werts und speichert die sortierte Ausgabe in der angegebenen Ausgabedatei.
$ sort -n -t'|' -k2 test -o outfile
Der Inhalt der Ausgabedatei wird unten angezeigt.
$ cat outfile aa|1a|tt aa|2a|ff aa|3a|kk aa|5a|zz