gnu sed; lazy/greedy quantifier

fm5326

Grünschnabel
Hallo,
mit gnu sed möchte ich folgende Konvertierung durchführen:

Input string:
startAAAstopBBBstartCCCstopDDD
stopAAAstartBBBstopCCCstartDDD

Gewünschtes Ergebnis:
beginAAAendBBBbeginCCCendDDD
stopAAAbeginBBBendCCCstartDDD

Mein regexp:
s/start\(.*\)stop/begin\1end/g

ergibt leider das fehlerhafte Resultat:
beginAAAstopBBBstartCCCendDDD
stopAAAbeginBBBendCCCstartDDD

Ich habe in einem Tutorial über den lazy/greedy quantifier ? gelesen und
viele Varianten damit ausprobiert - leider ohne Erfolg.

Ich würde mich sehr freuen, wenn mir jemand einen Tip geben könnte.
 
Du koennstest mit -e mehrere Expressions angeben. So geh ich das an wenn ich verschiedene Sachen zu ersetzen habe.
Code:
echo "irgendeintext" | sed -e 's@alt1@neu1@g' -e 's@alt2@neu2@g'
 
Danke für Eure Vorschläge und den Link.
gnu sed scheint den lazy quantifier ? nicht zu unterstützen.

Mit PowerGrep funktioniert es nämlich wie erwartet:

Zunächst 'greedy'
search: start(.*)stop
replacement: begin\1end
Matches:
startAAAstopBBBstartCCCstopDDD
stopAAAstartBBBstopCCCstartDDD
Ergebnis:
beginAAAstopBBBstartCCCendDDD
stopAAAbeginBBBendCCCstartDDD

Und hier 'lazy':
search: start(.*?)stop
replacement: begin\1end
startAAAstopBBBstartCCCstopDDD
stopAAAstartBBBstopCCCstartDDD
Ergebnis:
beginAAAendBBBbeginCCCendDDD
stopAAAbeginBBBendCCCstartDDD
 
Zurück