14 nützliche Beispiele des ‚Sort‘ Befehls in Linux – Teil 1

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.3. Sortieren des Dateiinhalts

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

Note: The above command doesn’t sort the contents of the text file but only displays the sorted output on the terminal.

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.

Source:
https://www.tecmint.com/sort-command-linux/