14 Nützliche Beispiele für den Linux-Befehl 'sort' - Teil 1
Der Befehl 'sort' ist ein Linux-Programm, das zum Drucken von Zeilen von Eingabetextdateien und zum Verketten aller Dateien in sortierter Reihenfolge verwendet wird. Der Sortierbefehl verwendet Leerzeichen als Feldtrennzeichen und die gesamte Eingabedatei als Sortierschlüssel. Es ist wichtig zu beachten, dass der Sortierbefehl die Dateien nicht wirklich sortiert, sondern nur die sortierte Ausgabe druckt, bis Sie die Ausgabe umleiten.
Dieser Artikel zielt darauf ab, einen tiefen Einblick in den Linux-Befehl 'sort' zu erhalten, mit 14 nützlichen praktischen Beispielen, die Ihnen zeigen, wie Sie den sort-Befehl unter Linux verwenden.
1. Erstellen einer Textdatei mit angegebenem Inhalt
Zuerst erstellen wir eine Textdatei mit dem Namen 'tecmint.txt', die zum Ausführen von 'sort'-Befehlsbeispielen in unserem Arbeitsverzeichnis für diese Aufgabe '/home/$USER/Desktop/tecmint' verwendet wird.
Die Option '-e' im folgenden Befehl ermöglicht die Interpretation des umgekehrten Schrägstrichs und /n weist den Befehl echo an, jede Zeichenkette in eine neue Zeile zu schreiben.
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. Dateiinhalt anzeigen
Bevor wir mit dem Befehl 'sort' beginnen, werfen wir einen Blick auf den Inhalt der Datei und wie er mit dem folgenden cat-Befehl aussieht.
cat tecmint.txt
3. Sortieren von Dateiinhalten
Der Befehl "sort tecmint.txt" wird verwendet, um die Zeilen in der Datei in aufsteigender alphabetischer Reihenfolge neu anzuordnen, wenn es doppelte Zeilen gibt, wird eine Kopie jeder eindeutigen Zeile beibehalten.
sort tecmint.txt
Anmerkung: Der obige Befehl sortiert nicht den Inhalt der Textdatei, sondern zeigt nur die sortierte Ausgabe auf dem Terminal an.
4. Umleiten der sortierten Ausgabe in eine neue Datei
Der folgende Befehl wird verwendet, um die Zeilen der Textdatei "tecmint.txt" in alphabetischer Reihenfolge zu sortieren und leitet dann die sortierte Ausgabe in eine neue Datei mit dem Namen "sorted.txt" um, was bedeutet, dass die Originaldatei unverändert bleibt und der sortierte Inhalt in einer separaten Datei gespeichert wird.
Um den Inhalt zu überprüfen, verwenden Sie den Befehl cat.
sort tecmint.txt > sorted.txt
cat sorted.txt
5. Sortieren von Dateiinhalten in umgekehrter Reihenfolge
Der folgende Befehl wird verwendet, um die Zeilen der Textdatei "tecmint.txt" in umgekehrter Reihenfolge zu sortieren, d.h. er ordnet die Zeilen in absteigender alphabetischer Reihenfolge an und die sortierte Ausgabe wird dann in eine neue Datei mit dem Namen "reversesorted.txt" umgeleitet
sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt
6. Speichern einer Liste von Dateien und Verzeichnissen
Der folgende Befehl wird verwendet, um den Inhalt des Basisverzeichnisses des Benutzers ("/home/$USER") in einer detaillierten, langformatigen Ansicht mit dem Befehl ls aufzulisten, und leitet dann diese Verzeichnisliste an eine Textdatei mit dem Namen "lsl.txt" weiter, die sich auf dem Desktop des Benutzers befindet, genauer gesagt im Verzeichnis "tecmint".
ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt
Im Folgenden werden wir Beispiele für das Sortieren des Inhalts anhand von Feldern untersuchen, die nicht die Standardanfangszeichen sind.
7. Sortieren des Dateiinhalts basierend auf dem zweiten Feld
Der folgende Befehl wird verwendet, um den Inhalt der Datei "lsl.txt" basierend auf den Werten im zweiten Feld jeder Zeile zu sortieren. Die Option '-n' gibt eine numerische Sortierung an, bei der das zweite Feld als Zahlen und nicht als Text behandelt wird.
Die Option '-k2' gibt an, dass basierend auf dem zweiten Feld sortiert werden soll. Wenn Sie diesen Befehl ausführen, erhalten Sie eine sortierte Liste der Zeilen in "lsl.txt", wobei das Sortierkriterium die numerischen Werte im zweiten Feld jeder Zeile sind.
sort -nk2 lsl.txt
8. Sortieren des Dateiinhalts anhand des neunten Feldes
Der folgende Befehl wird verwendet, um die Zeilen in der Datei "lsl.txt" basierend auf den Werten im neunten Feld jeder Zeile in aufsteigender Reihenfolge zu sortieren. Die Option '-k9' legt fest, dass die Sortierung auf der Grundlage des neunten Feldes erfolgen soll.
sort -k9 lsl.txt
9. Sortieren Sie Dateien nach Dateigröße
Der folgende Befehl kombiniert die Befehle 'ls' und 'sort', um den Inhalt des Basisverzeichnisses des Benutzers in einem langen Auflistungsformat aufzulisten, und leitet dann die Verzeichnisliste an 'sort -nk5' weiter, wodurch die Liste basierend auf den Werten in der fünften Spalte sortiert wird, die die Dateigröße darstellt.
ls -l /home/$USER | sort -nk5
10. Entfernen doppelter Zeilen in der Datei
Der folgende Befehl sortiert die Zeilen in der Datei "tecmint.txt" in aufsteigender alphabetischer Reihenfolge und entfernt alle doppelten Zeilen mit der Option '-u', die für "unique" steht, und stellt sicher, dass eindeutige Zeilen in der sortierten Ausgabe beibehalten werden.
$ cat tecmint.txt
sort -u tecmint.txt
Bisherige Regeln (was wir beobachtet haben):
- Zeilen, die mit Zahlen beginnen, werden in der Liste bevorzugt und liegen oben, bis etwas anderes angegeben ist (
-r). - Zeilen, die mit Kleinbuchstaben beginnen, werden in der Liste bevorzugt und liegen oben, bis etwas anderes angegeben ist (
-r). - Der Inhalt wird basierend auf dem Vorkommen von Alphabeten im Wörterbuch aufgelistet, bis etwas anderes angegeben ist (
-r). - Der sort-Befehl behandelt standardmäßig jede Zeile als Zeichenkette und sortiert sie dann abhängig vom Vorkommen der Alphabete im Wörterbuch (Numerisch bevorzugt; siehe Regel – 1), bis etwas anderes angegeben ist.
11. Umleiten der Verzeichnisliste in eine Datei
Der folgende Befehl listet den Inhalt des Home-Verzeichnisses des Benutzers im Langformat auf, einschließlich versteckter Dateien und Verzeichnisse, und leitet dann die Verzeichnisliste an eine Textdatei mit dem Namen "lsla.txt" weiter, die sich auf dem Desktop des Benutzers im Verzeichnis "tecmint" befindet.
ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt
Diejenigen, die mit dem Befehl ls vertraut sind, wissen, dass 'ls -lA' äquivalent zu 'ls -l' plus versteckten Dateien ist. Infolgedessen ist der Großteil des Inhalts in diesen beiden Befehlen identisch.
12. Sortieren des Inhalts von Dateien
Der folgende Befehl sortiert den Inhalt der beiden Textdateien 'lsl.txt' und 'lsla.txt' in aufsteigender alphabetischer Reihenfolge, kombiniert den sortierten Inhalt und zeigt ihn dann im Terminal an.
$ sort lsl.txt lsla.txt
Beachten Sie die Wiederholung von Dateien und Ordnern.
13. Entfernen doppelter Zeilen in der Datei
Der folgende Befehl führt den Inhalt von zwei Textdateien, 'lsl.txt' und 'lsla.txt', zusammen und sortiert ihn in aufsteigender alphabetischer Reihenfolge, während alle doppelten Zeilen mit der Option '-u' entfernt werden, die sicherstellt, dass eindeutige Zeilen in der sortierten Ausgabe beibehalten werden.
$ sort -u lsl.txt lsla.txt
Beachten Sie, dass Duplikate in der Ausgabe weggelassen wurden. Darüber hinaus können Sie die Ausgabe in einer neuen Datei speichern, indem Sie sie umleiten.
14. Sortieren der Ausgabe nach mehreren Feldern mit benutzerdefiniertem Trennzeichen
Der folgende Befehl kombiniert die Befehle 'ls' und 'sort', um den Inhalt des Home-Verzeichnisses des Benutzers im Langformat aufzulisten, und leitet dann die Verzeichnisliste an den Befehl 'sort' weiter, der die Ausgabe basierend auf bestimmten Spalten und Feldern sortiert.
ls -l /home/$USER | sort -t "," -nk2,5 -k9
Hier ist eine Aufschlüsselung des Befehls:
-t ","– gibt an, dass ein Komma(",")als Feldtrennzeichen verwendet wird.-nk2,5– gibt die Sortierung nach einem numerischen Wert in den Spalten 2 bis 5 an, die in der Regel Berechtigungen und Besitzdetails darstellen.-k9– sortiert das Ergebnis weiter nach der neunten Spalte, die die Dateigröße darstellt.
Das war's fürs Erste. Im nächsten Artikel gehen wir auf detailliertere Beispiele des sortierbefehls für Sie ein.
Bitte teilen Sie weiterhin, kommentieren Sie, liken Sie uns und helfen Sie uns, ein breiteres Publikum zu erreichen.













