Каков правильный синтаксис для поиска подстроки (строки, которой предшествуют определенные строки и за которой следуют определенные строки), которая не соответствует определенному шаблону?
Например, я хочу взять все подстроки, которые начинаются с BEGIN_
, заканчиваются с _END
, а подстрока между ними не равно FOO
; и замените всю подстроку форматом "(внутренняя подстрока)". Следующее будет соответствовать:
BEGIN_bar_END
-> (bar)
BEGIN_buz_END
-> (buz)
BEGIN_ihfd8f398IHFf9f39_END
-> (ihfd)
Но BEGIN_FOO_END
не соответствует.
Я поиграл со следующим, но не могу найти правильный синтаксис:
sed -e 's/BEGIN_(^FOO)_END/($1)/g'
sed -e 's/BEGIN_([^FOO])_END/($1)/g'
sed -e 's/BEGIN_(?!FOO)_END/($1)/g'
sed -e 's/BEGIN_(!FOO)_END/($1)/g'
sed -e 's/BEGIN_(FOO)!_END/($1)/g'
sed -e 's/BEGIN_!(FOO)_END/($1)/g'