Каков правильный синтаксис для поиска подстроки (строка, которая предшествует и сопровождается определенными строками), которая не соответствует определенному шаблону?
Например, я хочувзять все подстроки, которые начинаются с BEGIN_
, заканчиваются с _END
, а подстрока между ними не равна FOO
;и заменить всю подстроку на формат "( внутренняя подстрока )".Будет соответствовать следующее:
BEGIN_bar_END
-> (bar)
BEGIN_buz_END
-> (buz)
BEGIN_ihfd8f398IHFf9f39_END
-> (ihfd8f398IHFf9f39)
Но 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'