Каков правильный синтаксис для поиска подстроки (строка, которой предшествуют и следуют определенные строки), которая соответствует не конкретному шаблону?
Например, я хочу взять все подстроки, которые начинаются с 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'