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