Текущая команда sed
анализирует регулярное выражение как шаблон, совместимый с POSIX BRE.
В BRE POSIX ?
соответствует буквальному символу ?
, а {
/ }
также соответствует буквальному {
/ }
символам. Чтобы сделать квантификатор диапазона в паттерне BRE POSIX, вам нужно экранировать {...}
, \{min,max\}
.
[1]
равно 1
, поэтому скобки здесь довольно избыточны.
Чтобы исправить свой шаблон, вы можете заменить ?
на \{0,1\}
(0 или 1 вхождение) и {4}
на \{4\}
:
sed -i "s/&VAR1\s*=\s*'\{0,1\}1\{4\}'\{0,1\}/EXAMPLE/g" "$f"