Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sort(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

comm(1)

join(1)

uniq(1)

ctype(3C)

sort(1)                                                             sort(1)

NAME
     sort - Dateien sortieren und/oder mischen

SYNTAX
     sort [option ...] [datei ...]

BESCHREIBUNG
     sort sortiert die Zeilen der Eingabedatei und schreibt das Ergebnis
     auf die Standardausgabe.

     Geben Sie mehrere Eingabedateien an, sortiert und mischt sort die
     Dateien in einem Arbeitsgang, d. h. der Inhalt aller Eingabedateien
     wird sortiert ausgegeben.

     Sie können entweder nach der ganzen Zeile oder nach bestimmten Zeilen-
     ausschnitten sortieren. Ein solcher Zeilenausschnitt heißt Sortier-
     feld. Wenn Sie nach der ganzen Zeile sortieren wollen, geben Sie keine
     Sortierfelder an. Wenn Sie nur nach bestimmten Ausschnitten der Zeilen
     sortieren wollen, geben Sie ein oder mehrere Sortierfelder an. Ein
     Sortierfeld geben Sie anhand der Felder einer Zeile durch Positionsan-
     gaben in der Form +pos1 -pos1 an (siehe Festlegen bestimmter Sortier-
     felder). Beachten Sie den Unterschied zwischen einem Feld und einem
     Sortierfeld!

     sort teilt die Zeilen einer Datei in Felder ein. Ein Feld ist eine
     Zeichenkette, die durch ein Feldtrennzeichen oder Neue-Zeile-Zeichen
     abgegrenzt wird. Standardmäßig sind Leerzeichen und Tabulatorzeichen
     Feldtrennzeichen. Bei einer Folge von einem oder mehreren Standard-
     Feldtrennzeichen gehören alle Standard-Feldtrennzeichen zum folgenden
     Feld. Führende Leerzeichen in einer Zeile gehören somit standardmäßig
     zum ersten Feld.

OPTIONEN
     Keine Option angegeben:
          sort sortiert die Eingabezeilen lexikographisch, wobei als Ein-
          zelzeichen jeweils ein Byte verwendet wird. Für die Zeichen gilt
          die Sortierreihenfolge die durch LCCOLLATE definiert wird.

   Optionen, die das Verhalten von sort ändern

     -c   (c - check) sort prüft nur, ob die Eingabedatei bereits entspre-
          chend den gültigen Sortierkriterien sortiert ist. Wenn ja, wird
          nichts ausgegeben. Wenn nein, wird die erste Zeile ausgegeben,
          die den Sortierkriterien nicht entspricht.

          Zusammen mit Option -c dürfen Sie nur eine Datei angeben! Die
          Optionen -m und -o dürfen nicht zusammen mit -c verwendet werden.

          Zusammen mit -u: sort prüft zusätzlich, ob Zeilen mit identischen
          Sortierfeldern vorhanden sind.





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

     -m   (m - merge) sort mischt Eingabedateien zusammen, die bereits sor-
          tiert sind.

          -m darf nicht zusammen mit -c verwendet werden.

     -o ausgabedatei
          (o - output) Für ausgabedatei geben Sie den Namen einer Datei
          an, in die sort den sortierten Inhalt der Eingabedatei schreiben
          soll. Sie können für ausgabedatei auch eine Eingabedatei ange-
          ben. Deren ursprünglicher, nicht sortierter Inhalt wird dann
          allerdings überschrieben.

          Sie dürfen nur eine einzige Option -o angeben. -o darf nicht
          zusammen mit -c verwendet werden.

          -o ausgabedatei nicht angegeben: sort schreibt auf die Standard-
          ausgabe.

     -T verzeichnis
          Temporärdateien werden in verzeichnis angelegt.

          -T nicht angegeben: Temporärdateien werden in /var/tmp angelegt.

     -u   (u - unique) Identische Zeilen werden nur einmal ausgegeben. Als
          identische Zeilen zählen Zeilen mit identischen Sortierfeldern.

     -y [kmem]
          Mit der Option -y legen Sie fest, mit welcher Speicherplatzgröße
          sort zu sortieren anfängt. Die Ausführungsgeschwindigkeit von
          sort hängt in hohem Maße von diesem zu Beginn bereitgestellten
          Speicherplatz ab. Denn es ist eine Verschwendung von Speicher-
          platz bzw. von Rechenzeit, eine kleine Datei in einem großen
          Speicher bzw. eine große Datei in einem kleinen Speicher zu sor-
          tieren.

          kmem   Größe des Speichers in Kbyte, mit dem sort zu sortieren
                 beginnt. Geben Sie für kmem einen Wert an, der über dem
                 oberen Grenzwert von 1 Mbyte bzw. unter dem unteren Grenz-
                 wert von 16 Kbyte liegt, wird der entsprechende Grenzwert
                 verwendet. So startet sort z. B. mit dem minimalen Spei-
                 cherplatz, wenn Sie für kmem den Wert 0 angeben: -y0

                 kmem nicht angegeben: sort startet mit dem maximalen Spei-
                 cherplatz.

          -y [kmem] nicht angegeben:

          sort startet mit einer Standard-Speichergröße von 32 Kbyte und
          benützt mehr Speicher, falls mehr benötigt wird.





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

     -z recsz
          Mit der Option -z stellen Sie für die Mischphase Puffer von aus-
          reichender Größe bereit. Dies ist nur notwendig, wenn Option -c
          oder -m gesetzt ist, d. h. wenn nicht sortiert wird.

          Wenn sortiert wird, speichert sort die Länge der längsten in der
          Sortierphase gelesenen Zeile und stellt dadurch für die Misch-
          phase ausreichend große Puffer bereit.

          Wenn nicht sortiert wird, verwendet sort für die Puffergröße nor-
          malerweise einen Standardwert. Zeilen, die länger sind als die
          reservierte Puffergröße, führen zur abnormalen Beendigung von
          sort. Dies können Sie verhindern, indem Sie die Länge der läng-
          sten zu mischenden Zeile bzw. einen noch größeren Wert in Byte
          für recsz angeben.

   Optionen zum Ändern der Sortierkriterien

     Die folgenden Optionen können auf zwei Arten verwendet werden:

     -  entweder als Optionen vor der ersten Positionsangabe:

        Sie gelten dann global für alle nachfolgenden Sortierfelder. Bei
        Verwendung von -k müssen die Optionen vor der ersten Angabe von -k
        stehen; bei +pos bzw. -pos können die Optionen auch zwischen den
        einzelnen Positionsangeben stehen und gelten dann nur für die nach-
        folgenden Sortierfelder.

     -  oder als Modifikatoren für einzelne Sortierfelder:

        Sie heben dann für das angesprochene Sortierfeld die globalen Ein-
        stellungen auf. D. h. für dieses Sortierfeld gilt nur die Änderung
        des Sortierkriteriums entsprechend der angegebenen Modifikation.

        Als Modifikatoren werden die Optionsbuchstaben ohne Bindestrich und
        ohne Leerzeichen direkt an die Feldangabe angehängt (siehe Festle-
        gen bestimmter Sortierfelder).

     -b   sort ignoriert führende Feldtrennzeichen bei der Ermittlung von
          Anfang und Ende eines Sortierfeldes. Die Option -b ist jedoch nur
          wirksam, wenn nach Sortierfeldern und nicht nach der ganzen Zeile
          sortiert wird.

     -d   sort sortiert lexikalisch, d. h. nur Zeichen werden berücksich-
          tigt, für die die C-Funktionen isalnum(3C) oder isspace(3C) das
          Ergebnis "wahr" zurückliefern. Das sind Zeichen, die in der aktu-
          ell gültigen Umgebung als alphanumerische Zeichen oder als Zei-
          chen definiert sind, oder die einen Zwischenraum produzieren,
          z. B. Leer- oder Tabulatorzeichen.





Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

     -f   sort behandelt Groß- und Kleinbuchstaben gleich. Vor dem Sortier-
          verfahren werden Kleinbuchstaben durch Großbuchstaben ersetzt.

     -i   Bei nicht numerischen Vergleichen der Sortierfelder werden alle
          Zeichen, für die die C-Funktion isprint(3C) das Ergebnis "falsch"
          zurückliefert, nicht berücksichtigt. Dies sind Zeichen, die in
          der aktuell gültigen Umgebung als nicht druckbar definiert sind.
          Liegt für die Sortierreihenfolge z. B. die ASCII-Tabelle
          zugrunde, werden die Zeichen 001-037 (oktal) einschließlich und
          das Zeichen 0177 (oktal) nicht berücksichtigt [siehe ascii(5)].

     -M   Die ersten drei Zeichen des Sortierfeldes werden in Großbuchsta-
          ben verwandelt, als Monatsnamen betrachtet und entsprechend der
          Reihenfolge der Monate sortiert. Die Option -M impliziert die
          Option -b.

     -n   (n - number) sort sortiert (numerisch) nach Zahlenwerten. Ein
          Zahlenwert muß am Anfang des Sortierfeldes stehen und kann beste-
          hen aus: Leerzeichen, Minuszeichen, Ziffern 0-9, Dezimalpunkt.
          Mit der Option -n wird automatisch die Option -b gesetzt, d. h.
          führende Leerzeichen werden ignoriert.

     -r   (r - reverse) sort sortiert in umgekehrter Reihenfolge.

   Option zum Ändern der Feldtrennzeichen in den Eingabezeilen

     -t x sort behandelt das Zeichen, das Sie für x angeben, als Feldtrenn-
          zeichen. Im Unterschied zu den Standard-Feldtrennzeichen gehört x
          selbst nicht zu einem Feld. Es kann aber Teil eines Sortierfeldes
          sein, z. B. wenn das Sortierfeld vom ersten bis dritten jeweils
          durch x getrennten Feld reicht. Jedes Trennzeichen x ist signifi-
          kant, d. h. xx begrenzt ein leeres Feld.

          -t nicht angegeben:

          Es gelten die Standard-Feldtrennzeichen: Leer- und Tabulatorzei-
          chen. Eine Folge von einem oder mehreren Standard-Feldtrennzei-
          chen gehört zum nachfolgenden Feld.

   Festlegen bestimmter Sortierfelder

     Beachten Sie bei der Angabe von Sortierfeldern, daß Buchstabenfolgen,
     die in der aktuell gültigen Umgebung als Zeicheneinheit definiert
     sind, als ein Buchstabe zählen. In einer spanischen Umgebung wäre
     z. B. ch eine Zeicheneinheit.

     Die Angabe von Sortierfeldern mit neuer Syntax -k feldbeschreibung
     oder alter Syntax +pos1 bzw. -pos2 ist gleichbedeutend, darf aber
     nicht gemischt werden. Die Umstellung auf neue Syntax wird empfohlen.





Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

     Sie können mehrere Sortierfelder angeben. Gibt es mehrere Sortierfel-
     der, so sortiert sort zunächst nach dem ersten, bei Gleichheit im
     ersten Sortierfeld nach dem nächsten usw.

     -k feldbeschreibung
          Mit -k bestimmen Sie Anfang und Ende eines Sortierfeldes. In
          feldbeschreibung legen Sie dazu das erste und das letzte Zeichen
          des Sortierfeldes fest.

          feldbeschreibung hat folgendes Format:

          startfeld[typ][,endfeld[typ]]

          wobei für startfeld und endfeld die Nummer des Feldes und eines
          Zeichens im Feld angegeben werden kann:

          m[.n]

          m und n sind ganze Zahlen, die folgende Bedeutung haben:

          m    m gibt die Nummer des ersten bzw. letzten Feldes an.

          .n   n gibt die Nummer des ersten verwendeten Zeichens im ersten
               Feld an bzw. die Nummer des letzten verwendeten Zeichens im
               letzten Feld.

               n nicht angegeben:

               Das Feld wird vom ersten Zeichen an bzw. bis zum letzten
               Zeichen verwendet.

          typ  Modifiziert das Sortierfeld (siehe Optionen zum Ändern der
               Sortierkriterien).

     +pos1 [-pos2]
          Mit +pos1 -pos2 bestimmen Sie anhand der Felder der Eingabezeilen
          Anfang und Ende eines Sortierfeldes.

          +pos1 legt die Position des ersten Zeichens im Sortierfeld,

          -pos2 legt die Position des ersten Zeichens nach dem Sortierfeld
          fest. +pos1 muß vor -pos2 stehen.

          -pos2 nicht angegeben:

          Das Sortierfeld geht von +pos1 bis zum Zeilenende.

          Die Argumente pos1 und pos2 haben das Format:

          m[.n][typ]




Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

          m und n sind ganze Zahlen, die folgende Bedeutung haben:

          m    m Felder der Zeile überspringen. Angesprochen ist also Feld
               m+1.

          .n   n Zeichen einschließlich Feldtrennzeichen nach dem letzten
               Zeichen von Feld m überspringen. Angesprochen ist also Zei-
               chen n+1 im Feld m+1. Ist Option -b angegeben, zählen Feld-
               trennzeichen am Feldanfang nicht mit, +m.nb spricht also das
               n+1te Nicht-Trennzeichen nach dem Feld m an.

               .n nicht angegeben:

               Dies ist mit .0 gleichbedeutend und spricht also das erste
               Zeichen nach dem Feld m an. Ist Option -b angegeben, zählen
               Feldtrennzeichen am Feldanfang nicht mit, +m.0b spricht also
               das erste Nicht-Trennzeichen nach dem Feld m an.

          typ  Modifiziert das Sortierfeld (siehe Optionen zum Ändern der
               Sortierkriterien).

     Beispiel:
          Das Sortierfeld beginnt im zweiten Feld beim vierten Zeichen und
          endet mit diesem Feld. Sie geben das Sortierfeld so an:

          sort -k 2.4,2 (neue Syntax) oder

          sort +1.3 -2 (alte Syntax)

          Erläuterung:

                          Ende        Ende    Ende
                          Feld1       Feld2   Feld3
                              |           |       |
                     030-456537 A.Meierlein München
                                  |       |
                                 Sortierfeld

          2.4  Beim 4. Zeichen des 2. Feldes anfangen

          +1.3 Feld 1 und 3 Zeichen überspringen:

               das 4. Zeichen nach Feld 1 ist das 1. Zeichen im Sortier-
               feld: M

          -2   Feld 2 und 0 Zeichen überspringen:

               das 1. Zeichen nach Feld 2 ist das 1. Zeichen nach dem Sor-
               tierfeld: Leerzeichen. Das Zeichen davor ist also das letzte
               Zeichen im Sortierfeld: n




Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

               Beachten Sie, daß Standard-Feldtrennzeichen, anders als ein
               mit Option -t definiertes Feldtrennzeichen, zum nachfolgen-
               den Feld gehören. Das 1. Zeichen von Feld 2 ist somit das
               Leerzeichen, das 2. Zeichen das A usw.

     --   Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
          beginnt.

     datei
          Name der Datei, die Sie sortieren möchten.

          Sie können mehrere Dateien angeben. Alle angegebenen Dateien wer-
          den sortiert und zusammengemischt, so daß die Eingabezeilen aus
          allen Dateien sortiert auf die Standardausgabe ausgegeben werden.
          In der Eingabedatei zählen alle Buchstabenfolgen als ein Buch-
          stabe, die in der aktuell gültigen Umgebung als Zeicheneinheit
          definiert sind. In einer spanischen Umgebung wäre z. B. ch eine
          Zeicheneinheit. Fehlt in der letzten Zeile einer Datei datei ein
          Neue-Zeile-Zeichen, so fügt sort es ein, gibt eine Warnung aus
          und setzt die Bearbeitung fort.

          Zusammen mit Option -c dürfen Sie nur eine Datei angeben!

          Wenn Sie für datei einen Bindestrich - angeben, liest sort von
          der Standardeingabe.

          datei nicht angegeben: sort liest von der Standardeingabe.

ENDESTATUS
     0   Alle Eingabedateien wurden korrekt bearbeitet. Bei Angabe von -c
         war die Eingabedatei korrekt sortiert.

     1   Bei Angabe von -c: die Eingabedatei war nicht korrekt sortiert.
         Bei Angabe von -c -u: es wurden Eingabezeilen mit identischen Sor-
         tierfeldern gefunden.

     >1  Fehler.

INTERNATIONALE UMGEBUNG
     Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
     texte.

     Die Umgebungsvariable LCCOLLATE bestimmt die gültige Sortierreihen-
     folge, nach der sort die Eingabe sortiert.

     LCCTYPE legt für die Optionen -b, -d, -f und -i die Zeichenklassifi-
     zierung fest.

     LCNUMERIC bestimmt für die Option -n die gültige Darstellung des
     Dezimalpunkts.




Seite 7                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

     LCTIME bestimmt für die Option -M die aktuell gültigen Monatsnamen
     und ihre Abkürzung und beeinflußt ihre Sortierreihenfolge.

     Die Antwort auf Ja/Nein-Abfragen muß in der jeweils definierten Spra-
     chumgebung erfolgen.

     Wenn LCMESSAGES, LCCOLLATE, LCCTYPE, LCNUMERIC oder LCTIME nicht
     oder als leere Zeichenkette definiert ist, wird der Wert von LANG als
     Standardwert für die jeweils nicht gesetzte oder leere Variable heran-
     gezogen. Ist auch LANG nicht oder als leere Zeichenkette definiert,
     verhält sich das System so, als wäre es nicht internationalisiert.

     Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
     bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
     Bereich der Internationalisierung.

     Hat eine der Variablen für die internationale Umgebung einen ungülti-
     gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.

BEISPIELE
     Beispiel 1

     Der Inhalt von eingabedatei soll nach dem zweiten Feld sortiert wer-
     den.

     $ sort -k 2,2 eingabedatei

     Beispiel 2

     Der Inhalt von eingabedatei1 und eingabedatei2 soll in umgekehrter
     Reihenfolge nach dem zweiten Zeichen im zweiten Feld (= 1. Nicht-
     Leerzeichen bei vorausgesetzter Feldtrennung durch jeweils 1 Leerzei-
     chen) sortiert werden; die Ausgabe soll in ausgabedatei geschrieben
     werden.

     $ sort -r -o ausgabedatei -k 2.1,2.2 eingabedatei1 eingabedatei2

     Beispiel 3

     Der Inhalt von eingabedatei1 und eingabedatei2 soll in umgekehrter
     Reihenfolge nach dem ersten Nicht-Leerzeichen im zweiten Feld sortiert
     werden.

     $ sort -r -o ausgabedatei -k 2.0b,2.1b eingabedatei1 eingabedatei2

     Beispiel 4

     Die Datei /etc/passwd soll nach den Benutzernummern (3. Feld) sortiert
     ausgegeben werden.

     $ sort -t : -k 3n,3 /etc/passwd



Seite 8                      Reliant UNIX 5.44               Gedruckt 11/98

sort(1)                                                             sort(1)

     Beispiel 5

     Die bereits sortierte Datei eingabedatei soll ausgegeben werden.
     Dabei soll von mehreren Zeilen, bei denen das dritte Feld überein-
     stimmt, jeweils nur die erste Zeile ausgegeben werden.

     $ sort -u -k 3,3 eingabedatei

DATEIEN
     /var/tmp/stm???
          Temporäre Dateien

SIEHE AUCH
     comm(1), join(1), uniq(1), ctype(3C).








































Seite 9                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026