Antworten:
In Perl (und PCRE) ist dies mit einem Lookbehind mit einer Breite von Null erreichbar :
(?<=funnyword).*$
das mit "lustiges Wort" übereinstimmt, es aber nicht als Teil des Spiels verbraucht. Diese funktionieren nur mit Text fester Länge im Lookbehind. Sie können auch negative lookbehinds ( (?<!...)) verwenden, um anzugeben, dass Text nicht vorhanden ist.
In jeder einigermaßen aktuellen Version von Perl \Kist dies fast ein exakter Ersatz für\zs die Verwendung von Perl :
funnyword\K.*$
\Kverwirft alles, was bisher übereinstimmt, stimmt aber ab diesem Zeitpunkt weiter überein. Das vorherige Teil \Kmuss nicht fest sein. Dies ist jetzt auch in PCRE , aber ich bin nicht sicher, in welcher Version es kam.
\zekann stattdessen mit einem Lookahead mit einer Breite von Null erreicht werden (?=...). Dieses Muster muss nicht fest sein.
Da sed POSIX BREs verwendet , gibt es keinen Lookaround . In diesem Fall können Sie es jedoch ziemlich einfach mit einer normalen Erfassungsgruppe simulieren:
sed -e 's/\(funnyword\).*$/\1otherword/'
Sie können das gleiche für positive Lookahead tun. Wenn Sie wirklich eine kompliziertere Anforderung haben, müssen Sie sich möglicherweise an Perl oder einen anderen Ansatz wenden.