On Wed, September 23, 2009 3:24 pm, Joerg Thuemmler wrote:
blabla<!--START-->das soll raus das auch bis hierher<!--ENDE-->blubblub... ... Ich dachte, ein primitives
sed -e 's/<!--START-->.*<!--ENDE-->//g'
würde es tun. Tut es aber nicht, auch nicht mit diversen Quotings. Es erwischt nur Bereiche, die in einer Zeile liegen. Irgendwo hab ich ein Brett vorm Kopf.
Sed ist ein Stream-Editor. Der liest *eine Zeile*, führt die Bearbeitung durch und macht dann weiter mit der nächsten Zeile. Demzufolge kann dein Pattern nicht funktionieren, denn per default hast du immer nur genau eine Zeile im Speicher. Man kann aber sed beibringen, mehrere Zeilen einzulesen. Das ist aber nur sinnvoll, wenn deine zu bearbeitenden Dateien kleiner als dein RAM sind, sonst wird es vermutlich grottig lahm. Diese Methode sollte funktionieren: #v+ sed -e ':x;N;$!bx;s/<!--START-->.*<!--ENDE-->//g' foo #v- Das könnte aber noch an der Greediness scheitern und Dir zu viel wegschnippeln. Die angesprochene Perl-Lösung könnte helfen. Ich würde es wahrscheinlich so machen, oder wenn es quick and dirty sein soll und die Datei nicht zu groß ist Vim mißbrauchen: #v+ vim -u NONE -N -c '%s/<!--START-->\_.\{-}<!--ENDE-->//g|w! output|q!' foo #v- Mit freundlichen Grüßen Christian -- ERROR 047: Keyboard not found. Press RETURN to continue. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org