[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal:Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Mit dem Befehl '''sort''' lassen sich Dateien zeilenweise sortieren. Zudem ist es möglich, mit Hilfe von sort zu überprüfen, ob Dateien sortiert sind. Der Befehl kann auch dazu dienen, mehrere sortierte oder unsortierte Dateien zu einer sortierten Gesamtdatei zusammenzufügen. = Installation = Das Programm ist im Paket * '''coreutils''' von Ubuntu enthalten und deshalb auf jedem System vorinstalliert. = Aufruf = Die allgemeine Syntax lautet [1]: {{{#!vorlage Befehl sort OPTION DATEI }}} `sort` kennt folgende Optionen: {{{#!vorlage Tabelle Optionen von `sort` +++ Option Beschreibung +++ `-b` oder `--ignore-leading-blanks` Ignoriere Leerzeichen am Zeilenanfang +++ `-c` oder `--check` oder `--check=diagnose-first` Überprüfung, ob eine Datei sortiert ist (ohne Sortierung). Ist die Datei nicht sortiert, wird der Wert `1` ausgegeben. +++ `-C` oder `--check=quiet` oder `--check=silent` Wie `-c`, jedoch wird die erste unsortierte Zeile nicht ausgegeben +++ `-d` oder `--dictionary-order` Berücksichtige beim Sortieren nur Leerzeichen und alphanumerische Zeichen +++ `-f` oder `--ignore-case` Ignoriere beim Sortieren die Groß- und Kleinschreibung +++ `-g` oder `--general-numeric-sort` Anhand des verallgemeinerten numerischen Wertes vergleichen. Siehe auch Option `-n`. [post:9290593:Unterschied] +++ `-h` oder `--human-numeric-sort` Vergleicht menschenlesbare Zahlen (z. B. 2K 1G) +++ `--help` Hilfe +++ `-i` oder `--ignore-nonprinting` Nur druckbare Zeichen berücksichtigen +++ `-k` oder `--key=POS1[,POS2]` Ein Schlüssel geht von POS1 (beginnend mit 1) bis POS2 (Voreinstellung: Zeilenende) +++ `-m` oder `--merge` Verbinde bereits sortierte Dateien (ohne anschließende Sortierung) +++ `-M` oder `--month-sort` Monatsweise Sortierung ("January" bis "December") +++ `-n` oder `--numeric-sort` Sortierung von Zahlen gemäß ihrem numerischen Wert. Siehe auch Option `-g`. [post:9290593:Unterschied] +++ `-o` oder `--output=FILE` Ausgabe von `sort` in eine Datei +++ `-R` oder `--random-sort` Sortierung in zufälliger Reihenfolge +++ `-r` oder `--reverse` Sortierung in umgekehrter Reihenfolge +++ `-t` oder `--Feldtrenner=SEP` SEP ist der Trenner anstatt Wechsel von nicht-Leerzeichen zu Leerzeichen (siehe Beispiel mit IP-Nummern am Ende) +++ `--sort=WORT` Gemäß WORT sortieren: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V +++ `-u` oder `--unique` Sortierung ohne doppelte Zeilen }}} Weitere Optionen sind der [:man:Manpage] zu entnehmen. = Beispiele = == Sortierung nach Größe == Im folgenden Beispiel werden die Dateien im Arbeitsverzeichnis nach der Größe sortiert und die Ausgabe in die Datei '''datei.txt''' geschrieben. Zunächst werden mit der `-s`-Option von [:ls:] die Dateien mit der Dateigröße vor dem Dateinamen angezeigt, dann wird die so erzeugte Liste mit einer [:Shell/Umleitungen#Der-Pipe-Operator:Pipe] an den Sort-Befehl übergeben und das Ergebnis in die Datei geschrieben: {{{#!vorlage Befehl ls -s | sort -n >> datei.txt }}} {{{ 44K Elmore Leonhard - Easy on the Adverbs.html 120K mcabber_guide.pdf 164K playlist.xspf 432K Richard Rorty - Postmodernist Bourgeois Liberalism.pdf }}} == Sortierung in umgekehrter Reihenfolge == Im folgenden Beispiel wird die Datei '''deutsche_buchstabiertafel_a-e.txt''' in umgekehrter alphabetischer Reihenfolge sortiert: {{{#!vorlage Befehl sort -r deutsche_buchstabiertafel_a-e.txt }}} {{{Emil Dora Cäsar Berta Ärger Anton }}} == Positionsweise Sortierung == Die Datei '''datei.txt''' mit dem Inhalt {{{ Helga 1000 Franz 1000 Friedrich 1000 Otto 1500 Paul 5000 Xaver 2000 }}} soll zunächst (numerisch) nach der zweiten und anschließend der ersten Spalte sortiert werden; das Ergebnis soll in eine Datei '''datei_neu.txt''' geschrieben werden. Dazu muss `sort` mit folgenden Optionen benutzt werden: {{{#!vorlage Befehl sort -k2 -n -k1 datei.txt -o datei_neu.txt }}} `-k2` bezeichnet dabei die zweite Spalte. Ergebnis: {{{#!vorlage Befehl cat datei_neu.txt }}} {{{ Franz 1000 Friedrich 1000 Helga 1000 Otto 1500 Xaver 2000 Paul 5000 }}} Mit `sort -k` kann man sehr schön IP-Adressen sortieren (für IPv4): {{{#!vorlage Befehl sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 }}} Das geht natürlich auch für für IPv6: {{{#!vorlage Befehl sort -d -t : -k 1,1 -k 2,2 -k 3,3 -k 4,4 -k 5,5 -k 6,6 -k 7,7 -k 8,8 }}} = Links = * [http://www.gnu.org/software/coreutils/ GNU Core Utilities] {en} * [wikipedia_en:Sort_(Unix):sort] * [:Shell/Befehlsübersicht:] {Übersicht} Übersicht über verschiedene Shell-Befehle # tag: Shell