|
Einführung in die Shell-ProgrammierungShells |
Sortieren mit sortsort teilt jede Zeile der Eingabedatei in Felder ein, wobei als Voreinstellung das Leerzeichen (Blank) und das Tab als Trenner fungieren. Jede Zeile wird über diese Felder von links nach rechts sortiert. Falls die Einträge beim am weitesten links stehenden Feld (Feld 0) zweier Zeilen gleich sind macht sort mit dem nächsten Feld weiter. Analog gilt dies bei Gleichheit für alle weiteren Felder. Am besten veranschaulicht man sich dies an einem Beispiel. Betrachten wir folgende in adressen.txt gespeicherte Datei: Frank Meyer Radolfzell Peter Rabe Konstanz Ottmar Huber Rosenheim Anna Rabe Radolfzell Oskar Lindner Konstanz Anna List Freiburg Franziska Huber Rosenheim Helge Rabe Konstanz Der Shell-Aufruf sort adressen.txt liefert dann folgende sortierte Ausgabe: Anna List Freiburg Anna Rabe Radolfzell Frank Meyer Radolfzell Franziska Huber Rosenheim Helge Rabe Konstanz Oskar Lindner Konstanz Ottmar Huber Rosenheim Peter Rabe Konstanz Bei diesem Beispiel stellt sich in nahezu natürlicher Weise die Frage, wie man diese Adressenliste nach dem Nachnamen sortieren kann. Der Aufruf sort +1 -2 adressen.txt bringt das gewünscht Resultat: Franziska Huber Rosenheim Ottmar Huber Rosenheim Oskar Lindner Konstanz Anna List Freiburg Frank Meyer Radolfzell Anna Rabe Radolfzell Helge Rabe Konstanz Peter Rabe Konstanz "+1" bedeutet, dass sort ab der 1. Spalte mit der Sortierung beginnen soll. (Die Nummerierung der Spalten beginnt mit 0!) "-2" bedeutet, dass die Sortierung nur bis zur 2. Spalte erfolgen soll. Dies hat zur Folge, dass Anna Rabe aus Radolfzell for den beiden anderen Rabe der Liste erscheint. Dies entspricht in den meisten Fällen nicht dem, was wir eigentlich wollen. Wir können dies folgendermaßen korrigieren: sort +1 -3 adressen.txt Franziska Huber Rosenheim Ottmar Huber Rosenheim Oskar Lindner Konstanz Anna List Freiburg Frank Meyer Radolfzell Helge Rabe Konstanz Peter Rabe Konstanz Anna Rabe Radolfzell Zum Schluss behandeln wir noch die Frage, wie man sort benutzt, wenn keine Leerzeichen sondern z.B. Kommas als Feld-Trennzeichen (field separator) verwendet wurde, also z.B. obiges Beispiel in der Form Frank, Meyer, Radolfzell Peter, Rabe, Konstanz Ottmar, Huber, Rosenheim Anna, Rabe, Radolfzell Oskar, Lindner, Konstanz Anna, List, Freiburg Franziska, Huber, Rosenheim Helge, Rabe, Konstanz gespeichert wäre. Die Lösung ist denkbar einfach. Man muss lediglich den Parameter "-t," bei den Aufrufen benutzen, also:
|
© Copyright 2004 - 2008, Bodenseo, Linux-Kurse am Bodensee, Bernd Klein