sh: Sortieren von Strings

Post Reply
Message
Author
Orum

sh: Sortieren von Strings

#1 Post by Orum »

Hallo,

ich versuche einen String alphabetisch zu sortieren. Also zum Beispiel:

LISTE="Banane Apfelsine Zitrone Orange Apfel Kiwi Gurke Spargel Kartoffel Blaukraut"

sollte dann

Apfel Apfelsine Banane .... ergeben

allerdings:

Code: Select all

echo $LISTE | sort
klappt aber nicht. Der Umweg, die Liste in eine Datei zu schreiben, eine Frucht pro Zeile, und dann zu sortieren und wieder in eine Variable einzulesen klappt zwar, ist mir aber zu unelegant und auch zu umständlich.
Außerdem geht es um ca. 500 Strings, die ich gerne sortieren möchte. Dafür 500 temporäre Dateien anlegen muß nicht sein. Auch nicht in eine Ramdisk.

Gibt es eine shell basierte Möglichkeit ?

prospero_p

sort liste

#2 Post by prospero_p »

das programm sort sortiert zeilenweise!
deshalb:

LISTE="Banane Apfelsine Zitrone Orange Apfel Kiwi Gurke Spargel Kartoffel Blaukraut"
for s in $LISTE; do echo $s; done |sort

gruss prospero_p

Orum

#3 Post by Orum »

Ah, danke. Ich wußte nicht, daß man nach den "done" die Gesamtausgabe der Schleife noch weiterbenutzen kann.
Das war mir neu.

Ich hatte "echo $s > /tmp/datei" verwandt für meine eher unelegante Lösung.

JochenAlsGast

#4 Post by JochenAlsGast »

Man kann auch die Leerzeichen mittels tr zu Newlines wandeln und die entstandenen Zeilen durch sort sortieren lassen:

Code: Select all

echo $LISTE | tr ' ' '\012' | sort
Jochen

rattenkind

#5 Post by rattenkind »

JochenAlsGast wrote:

Code: Select all

echo $LISTE | tr ' ' '\012' | sort
Jochen
Hi Jochen,

wo findet man denn eine Übersicht, um diese Zahlencodes zu finden?

ratte

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#6 Post by jochen »

Entweder "info tr", "man tr" oder allgemeingültig "man 7 ascii". Die Schreibweise \012 bdeutet für den tr nichts anderes als "das Zeichen mot Oktalwert 12".

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Post Reply