Shells: Tutorial |
||||||||||||||||||||||||||||||||
* Einführung * Installation * Paketmanager * Grundlagen * Shells * Entwicklung * KDE * Skriptsprachen * AWK * PHP * Perl * Apache * Veranstaltungen * Schulungen * Bücher * Netzwerk * OpenOffice * OpenSource * Samba | ||||||||||||||||||||||||||||||||
Shells![]() Home Erste Schritte mit der Bourne-Shell Dateien zeilenweise zusammenfügen Head or Tail Schleifen und Zählen Shell-Variablen Pipes Sortieren von Daten Wer sucht der findet! Praktische Shell-Skripte Rechtschreibung Schleifen und elegant Zählen Texte formatieren mit fmt und fold Umlenkung der Ein- und der Ausgaben Klammer-Erweiterung Verknüpfen von Textdateien mittels Schlüsselfeldern Mit freundlicher Unterstützung von: Linux-Kurse und Seminare ![]() Veranstalter des Linux-Tag am Bodensee 2007 und 2008 Kontakt Haftung Impressum Problem Hilfe Startseite |
Sortieren von DatenMit dem Befehl sort hat man ein mächtiges Werkzeug Daten zu sortieren. sort 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:
Der Shell-Aufruf sort adressen.txt liefert dann folgende sortierte Ausgabe:
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:
"+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
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
gespeichert wäre. Die Lösung ist denkbar einfach. Man muss lediglich den Parameter "-t," bei den Aufrufen benutzen, also:
sort -k 2 -n zahlen.txt liefert dann folgende nach der zweiten Spalte numerisch geordnete Ausgabe:
Achtung: Minus- und Pluszeichen vor Zahlen vor Zahlen werden entsprechend ihrer mathematischen Bedeutung korrekt sortiert, ebenso werden Zahlen mit führendem Komma, korrekt als 0. interpretiert. Zahlen in Exponentialschreibweise werden aber nicht korrekt sortiert! Sortiert man nachfolgende Datei mit obigem Befehl
erhält man
|