Die `sort`-Befehls ist ein Linux-Programm, das dafür verwendet wird, Zeilen von Eingabetextdateien auszugeben und alle Dateien in sortierter Reihenfolge zu verketten. Der Sortierbefehl verwendet Leerzeichen als Feldseparator und die gesamte Eingabedatei als Sortierschlüssel. Es ist wichtig zu bemerken, dass der Sortierbefehl die Dateien nicht tatsächlich sortiert, sondern nur die sortierte Ausgabe ausgibt, bis Sie die Ausgabe umleiten.
Dieser Artikel zielt darauf ab, einen tieferen Einblick in den Linux-`sort`-Befehl zu geben und Ihnen 14 nützliche praktische Beispiele zu zeigen, wie Sie den Sortierbefehl in Linux verwenden können.
1. Erstellen einer Textdatei mit spezifischem Inhalt
Zuerst werden wir eine Textdatei erstellen, die den Namen „tecmint.txt“ trägt und für die Ausführung von „sort“-Befehlsbeispielen in unserem Arbeitsverzeichnis verwendet wird, das für diese Aufgabe „/home/$USER/Desktop/tecmint“ ist.
Die Option „-e
“ im folgenden Befehl ermöglicht die Interpretation von Backslash und /n
weist den echo-Befehl an, jedes String in einer neuen Zeile zu schreiben.
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. Anzeigen des Dateiinhalts
Bevor wir mit dem „sort“-Befehl beginnen, schauen wir uns den Inhalt der Datei an 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 umzusortieren. Sollten doppelte Zeilen vorhanden sein, behält der Befehl eine Kopie jeder einzelnen eindeutigen Zeile bei.
sort tecmint.txt
4. Umleiten des sortierten Ausgangs in eine neue Datei
Der folgende Befehl wird verwendet, um die Zeilen der Textdatei „tecmint.txt“ alphabetisch zu sortieren und dann den sortierten Ausgang in eine neue Datei namens „sorted.txt“ umzuleiten. Das bedeutet, dass die ursprüngliche Datei unverändert bleibt und der sortierte Inhalt in einer separaten Datei gespeichert wird.
Zum Überprüfen des Inhalts kann der cat-Befehl verwendet werden.
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, was bedeutet, dass die Zeilen in absteigender alphabetischer Reihenfolge angeordnet werden und der sortierte Ausgang dann in eine neue Datei namens „reversesorted.txt“ umgeleitet wird.
sort -r tecmint.txt > reversesorted.txt cat reversesorted.txt
6. Speichern einer Liste von Dateien und Verzeichnissen
Die folgende Befehlszeile dient zum Auflisten des Inhalts des Benutzerverzeichnisses („/home/$USER„) im detaillierten, langen Format unter Verwendung des ls-Befehls und leitet diese Verzeichnisliste dann in eine Textdatei namens „lsl.txt“ auf dem Desktop des Benutzers, genauer gesagt im Verzeichnis „tecmint„, um.
ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt cat lsl.txt
Nun werden wir Beispiele für das Sortieren von Inhalten anhand von Feldern untersuchen, die nicht die Standardinitialen darstellen.
7. Sortieren der Dateiinhalte basierend auf dem zweiten Feld
Der folgende Befehl wird verwendet, um den Inhalt der Datei „lsl.txt“ anhand der Werte im zweiten Feld jeder Zeile zu sortieren. Die '-n'
-Option zeigt an, dass eine numerische Sortierung erfolgen soll, wobei das zweite Feld als Zahlen und nicht als Text behandelt wird.
Die '-k2'
-Option gibt an, dass wir basierend auf dem zweiten Feld sortieren möchten. Durch Ausführung dieses Befehls erhältst du eine sortierte Liste der Zeilen in „lsl.txt„, wobei das Sortierkriterium die numerischen Werte im zweiten Feld jeder Zeile ist.
sort -nk2 lsl.txt
8. Sortieren von Dateiinhalten basierend auf dem neunten Feld
Der folgende Befehl dient zum Sortieren der Zeilen in der Datei „lsl.txt“ anhand der Werte im neunten Feld jeder Zeile in aufsteigender Reihenfolge. Die '-k9'
-Option gibt an, dass die Sortierung anhand des neunten Feldes erfolgen soll.
sort -k9 lsl.txt
9. Dateien nach Dateigröße sortieren
Die folgende Befehlszeile kombiniert die Befehle ‚ls‚ und ‚sort‚ um den Inhalt des Benutzer-Heimatverzeichnisses in einer langen Listungsform aufzulisten und leitet die Verzeichnislistung dann an 'sort -nk5'
weiter, welches die Liste basierend auf den Werten in der fünften Spalte sortiert, die die Dateigrößen darstellt.
ls -l /home/$USER | sort -nk5
10. Entfernen von doppelten Zeilen in Datei
Der folgende Befehl sortiert die Zeilen in der Datei „tecmint.txt“ in aufsteigender alphabetischer Reihenfolge und entfernt doppelte Zeilen mithilfe der '-u'
-Option, die für „unique“ steht, und stellt sicher, dass einzigartige Zeilen im sortierten Ausgabestrom erhalten bleiben.
$ cat tecmint.txt $ sort -u tecmint.txt
Bisherige Regeln (was wir beobachtet haben):
- Zeilen, die mit Zahlen beginnen, werden in der Liste bevorzugt und befinden sich ganz oben, es sei denn, es wird anders angegeben (
-r
). - Zeilen, die mit Kleinbuchstaben beginnen, werden in der Liste bevorzugt und befinden sich ganz oben, es sei denn, es wird anders angegeben (
-r
). - Inhalt wird basierend auf dem Auftreten von Buchstaben im Wörterbuch gelistet, es sei denn, es wird anders angegeben (
-r
). - Der Sortierbefehl behandelt standardmäßig jede Zeile als Zeichenkette und sortiert sie dann abhängig von dem Wörterbuchauftreten von Buchstaben (Zahlen bevorzugt; siehe Regel – 1), es sei denn, es wird anders angegeben.
11. Umleiten der Verzeichnislistung in eine Datei
Die folgende Befehlsliste zeigt den Inhalt des Benutzerverzeichnisses in langer Form, einschließlich versteckter Dateien und Verzeichnisse, und leitet dann die Verzeichnisliste in eine Textdatei namens „lsla.txt“ um, die sich auf dem Desktop des Benutzers im „tecmint“ -Verzeichnis befindet.
ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt cat lsla.txt
Diejenigen, die mit dem ls-Befehl vertraut sind, verstehen, dass 'ls -lA'
gleichwertig ist zu 'ls -l'
plus versteckte Dateien. Daher werden der Großteil des Inhalts in diesen beiden Befehlen gleich sein.
12. Sortieren des Inhalts von Dateien
Der folgende Befehl sortiert den Inhalt von zwei Textdateien, ‚ lsl.txt‚ und ‚ lsla.txt‚, in aufsteigender alphabetischer Reihenfolge und kombiniert dann den sortierten Inhalt im Terminal.
$ sort lsl.txt lsla.txt
Beachten Sie die Wiederholung von Dateien und Ordnern.
13. Entfernen doppelter Zeilen in Datei
Der folgende Befehl fügt die Inhalte von zwei Textdateien, ‚ lsl.txt‚ und ‚ lsla.txt‚, in aufsteigender alphabetischer Reihenfolge zusammen und entfernt dabei doppelte Zeilen mithilfe der '-u'
Option, die sicherstellt, dass einzigartige Zeilen in der sortierten Ausgabe erhalten bleiben.
$ sort -u lsl.txt lsla.txt
Beachten Sie, dass Duplikate aus der Ausgabe entfernt wurden. Darüber hinaus können Sie das Ergebnis in einer neuen Datei speichern, indem Sie es umleiten.
14. Sortieren der Ausgabe nach mehreren Feldern mit benutzerdefinierter Trennung
Der folgende Befehl kombiniert die Befehle ‘ls‘ und ‘sort‘, um den Inhalt des Heimatverzeichnisses des Benutzers in langer Form 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 Feld-Trennzeichen verwendet wird.-nk2,5
– zeigt an, dass die Sortierung anhand eines numerischen Werts in den Spalten 2 bis 5 erfolgt, die typischerweise Berechtigungen und Besitzverhältnisse darstellen.-k9
– sortiert das Ergebnis zusätzlich basierend auf der neunten Spalte, die Dateigrößen darstellt.
Das war’s für heute. In dem nächsten Artikel werden wir uns ausführliche Beispiele des sort-Befehls ansehen.
Bitte teilen, kommentieren, mögen und helfen Sie uns, ein größeres Publikum zu erreichen.