Відповіді:
У Perl (та PCRE) цього можна досягти з нульовою шириною позаду :
(?<=funnyword).*$
який відповідає "смішному слову", але не споживає його як частину матчу. Вони працюють лише з текстом фіксованої довжини в майбутньому. Ви також можете скористатися негативним lookbehinds ( (?<!...)), щоб вказати, що якогось тексту немає.
У будь-якій досить недавній версії Perl - \Kце майже точний замінник\zs , який ви використовуєте:
funnyword\K.*$
\Kвідкидає все відповідне досі, але продовжує відповідати з цього моменту. Частина раніше \Kне повинна бути фіксованої довжини. Зараз це також є у PCRE , але я не впевнений, у якій версії він увійшов.
\zeможе бути досягнуто замість пошуку нульової ширини замість цього, використовуючи (?=...). Цей шаблон не повинен бути фіксованої довжини.
Оскільки sed використовує POSIX BRE , пошуку немає . У цьому випадку, проте, ви можете досить легко їх моделювати за допомогою звичайної групи захоплення:
sed -e 's/\(funnyword\).*$/\1otherword/'
Ви можете зробити те ж саме для позитивного пошуку. Якщо у вас справді є більш складна вимога, можливо, вам доведеться звернути увагу на Perl або якийсь інший підхід.