Am Freitag, 26. August 2005 22:52 schrieb Dr. Jürgen Vollmer:
ist kein separates sed nötig, es reicht eingach noch mehr sed-Kommandos anzugeben:
varsortiert=`echo $var | \ sed -e 's/^ *//' -e 's/ *$// -e 's/_xy$//' -e 's/_/\n/g' | sort -f`
Oder ist es besser mehrere Pipes zu verwenden? Syntaktisch sind für mich mehrere Pipes leichter zu lesen und die Performance dürfte bei einer Variable mit 100 Zeichen vernachlässigbar sein.
man kann's ja auch so schreiben:
varsortiert=`echo $var | \ sed -e 's/^ *//' \ -e 's/ *$//' \ -e 's/_xy$//' \ -e 's/_/\n/g' |\ sort -f`
ist doch einfach zu lesen oder?
Ok, sofern man nicht einen \ beim Schreiben übersieht. :-) Ich "liebe" immer diese Fehlermeldungen von Zeile 3000, weil in Zeile 1000 ein ` vergessen wurde. So ganz passt es mir aber noch nicht: var="Diese_Worte_sollten_sortiert_ werden_xy_yz_xy" varsortiert=`echo $var | sed -e 's/_xy$//' -e 's/_yz$//' -e 's/_/\n/g' | \ sort -f | sed -e 's/^ *//' -e 's/ *$//'` Ich habe die Leerzeichen-Entfernung nach Ende der Schleife gestellt um sicher zu sein, dass letztlich kein Leerzeichen übrigbleibt. Konkret ist alles um einiges komplexer. echo $varsortiert Diese sollten sortiert werden Worte xy Ergebnis sollte aber sein: Diese sollten sortiert werden Worte xy yz Am Ende sollte also entweder oder ersetzt werden, aber nicht beides. Von der Syntax verstehe ich schon warum das passiert, weil eben hintereinander abgearbeitet wird. Al