Sortieren von Dateien
Der Filter sort, sortiert die Eingabedateien zeilenweise und gibt die sortíerten Daten auf Standardoutput aus. Wenn die sortierten Daten in einer Datei abgelegt werden sollen, so kann mit Pipe oder Umleitung gearbeitet werden.
Syntax :
sort [-cmu] [-ooutput] [-ykmem] -zrecsz] [-dfiMnr]
[-btx] [+pos1[-pos2]]... [inpfile]...
Regeln:
o Default Sort-key ist die gesamte Zeile
o Default Sort-Order ist aufsteigend nach der Collating-Sequence.
Die nachfolgenden Optionen beeinflußen den Sort:
-c Check only, es soll nur die Sortierfolge
geprüft werden.
Eine Ausgabe erfolgt nur, wenn die Folge fehlerhaft ist.
-m Merge, die Eingabedateien liegen in sortierter
Folge vor und sollen zusammengemischt werden.
-u unterdrücke doppelte Entries (unique)
sort -um +1 -2 datum
|_____ Sortierbegriff beginnt mit Feld 1
|___ Sortierbegriff endet vor Feld 1
- es wird nur nach dem ersten Entry
sortiert.
- Trennzeichen ist Blank
-ooutput Name der Outputdatei
sort -fm -omfile file1 file2 b>
-ykmem Angabe der Memorygrösse in KB die der Sort
als Anfangsvorgabe verwendet (Default max-Memory)
-y0 beginnt mit einer minimalen Memorygrösse.
Bei Bedarf wird mehr Memory zugeordnet
bis das Maximum erreicht ist.
-zrecsz Die Länge des längsten Satzes wird beim Einlesen
für die Sortphase gespeichert, damit für die
Merge-Phase die Buffer entsprechend allokiert
werden können. Wird die Sortphase nicht verwendet
(-c oder -m) so wird mit Systemdefaults gearbeitet.
Ist der Default zu klein, wird der Sort abnormal
beendet.
Die nachfolgenden Optionen überschreiben die
Defaultsortierfolge:
-d Dictionary Order (Buchstaben, Ziffern, Blanks)
-f Groß- und Kleinschreibung wird gleich behandelt
(fold)
-i Ignoriere Character außerhalb des ASCII-Bereichs
O40 bis O176 (oktal)
x20 bis x7E (hex)
32 bis 126 (dezimal)
bei nichtnumerischen Vergleichen.
-n Numerischer Sort (enthält implizit -b)
Zugelassene Zeichen:
- führende Blanks
- evlt Minus-Zeichen
- Null bis n Ziffern
evtl. mit Dezimalpunkt
-r absteigende Sortierfolgr (reverse order)
-tx Benutze Zeichen x als Trennzeichen zwischen den
Feldern
z.B. -t: bei der Sortierung der Datei /etc/passwd.
Jedes Trennzeichen ist signifikant.
:: definiert ein leeres Feld
Wenn -tx nicht angegeben ist, dann werden Strings durch
Blanks getrennt.
Das erste Blank oder TAB gilt als Feldbegrenzer.
Nachfolgende weitere Blanks sind Teil des
nachfolgenden Feldes.
(Alle Blanks am Satzanfang sind Teil des ersten Feldes).
-b führende Blanks und Tabs bei Feldvergleichen ignorieren.
Optionen können global für für alle Sortierschlüssel angegeben werden (vorne)
oder gezielt für einzelne Sortierschlüssel (direkt davor).
Die Angabe von pos1 und pos2 betrifft den Sortierschlüssel
Zählbeginn ist 1
+pos1 in der Form :
m[.n] gefolgt von einer Option bdfinr
|
|__ Anzahl der zu überspringenden Felder
+2 -> Sortierung 3. Feld
|
|_ Anzahl der zu überspringenden Bytes
innerhalb des Feldes
(Default .0). Wenn gleichzeitig mit
-b gearbeitet wird, dann wird erst
ab dem ersten nicht Blank gezählt
sort -t: -bn +2 /etc/passwd
|____ numeric
-pos2 in der Form m[.n] Die letzte Stelle des
Sortierbegriffs ist unmittelbar vor pos2
sort -t: +2 -3 sortdat
Option:
-b, --ignore-leading-blanks
-d, --dictionary-order
-f, --ignore-case
-n, --numeric-sort
-r, --reverse
Wenn kein Sortierschlüssel angebeben wird, wird die gesamte Zeile als Schlüssel verwendet.
-u trifft dann nur zu, wenn die komplette Zeile gleich ist.
Beispiele :
sort -t: +2 -3 +3r -4 sortdat
\__/_____ aufsteigend nach 3. Feld (Hauptschlüssel)
| |
\__/__________ absteigen nach 4. Feld
(2. Schlüssel)
ls -las | sort -f
Sortierung einer Datei mit mit einem Trennzeichen |
(Option -t'|' )
Sortierschlüssel ist das komplette Feld 1
Doppelte Einträge sollen entfernt werden
bookworm:/# cd datadir bookworm:/datadir# cat unsorted /segeln/navigation/index.php|Übersicht /segeln/tplan/index.php|Törnplanung /segeln/navigation/seezeichen/laterale.php|Laterale /segeln/astro/zeitgleichung.php|Zeitgleichung /segeln/funkschein/src.php|Prüfungsfragen, /segeln/navigation/seezeichen/laterale.php|Laterale /segeln/funkschein/dsc_menustruktur.php|DS-100 Menüstruktur bookworm:/datadir# sort -t'|' --key=1 -u unsorted > sorted bookworm:/datadir# cat sorted /segeln/astro/zeitgleichung.php|Zeitgleichung /segeln/funkschein/dsc_menustruktur.php|DS-100 Menüstruktur /segeln/funkschein/src.php|Prüfungsfragen, /segeln/navigation/index.php|Übersicht /segeln/navigation/seezeichen/laterale.php|Laterale /segeln/tplan/index.php|Törnplanung // =================================================================== # hier ist Feld 2 der Sortschlüssel # auch hier wird der doppelte Eintrag *laterale* entfernt bookworm:/datadir# sort -t'|' --key=2 -u unsorted > sorted_2 bookworm:/datadir# less sorted_2 /segeln/funkschein/dsc_menustruktur.php|DS-100 Menüstruktur /segeln/navigation/seezeichen/laterale.php|Laterale /segeln/funkschein/src.php|Prüfungsfragen, /segeln/tplan/index.php|Törnplanung /segeln/navigation/index.php|Übersicht /segeln/astro/zeitgleichung.php|Zeitgleichung bookworm:/datadir#