Всех приветствую!
есть такой файл
cat 123
# Starting MAC address (1)
90, 20, {0x01,0x00} \
# MAC address (C00)
50, 8, {0x00,0x0C}
#==========================================================
Хочу через sed в определённой строке, поменять выражение между фигурными скобками на какое то другое, причем хочу сделать это по шаблону.
Набросал пару вариантов и поискал в сети, но пока не получилось:
кустарный вариант
[root@localhost:~]# sed -r '/90, 20, {/s/^([^{]*{)(*.)(}\ .*)$/\1olo\3/' 123
sed: bad regex '90, 20, {': Unmatched \{
исправил regexp, но хочется оставить {
[root@localhost:~]# sed -r '/90, 20, /s/^([^{]*{)(*.)(}\ .*)$/\1olo\3/' 123
sed: bad regex '^([^{]*{)(*.)(}\ .*)$': Invalid content of \{\}
вроде так сработало
[root@localhost:~]# sed -r '/90, 20, \{/s/^([^{]*{)(*.)(}\ .*)$/\1olo\3/' 123
sed: bad regex '^([^{]*{)(*.)(}\ .*)$': Invalid content of \{\}
решил подшаманить regexp, но поменял разделитель
[root@localhost:~]# sed -r '/90, 20, /s!^([^{]*{)(*.)(}\ .*)$!\1olo\3!' 123
sed: bad regex '^([^{]*{)(*.)(}\ .*)$': Invalid content of \{\}
убрал -r , но кажется перестали работать группы:
[root@localhost:~]# sed '/90, 20, /s!^([^{]*{)(*.)(}\ .*)$!\1olo\3!' 123
# Starting MAC address (1)
90, 20, {0x01,0x00} \
# MAC address (C00)
50, 8, {0x00,0x0C}
#==========================================================
попробовал экранировать { и } и вернулся к тому с чего начал, шаманил с 3 матч группой
[root@localhost:~]# sed -r '/90, 20, /s!^([^\{]*{)(*.)(\}[^\}]*)$!\1olo\3!' 123
sed: bad regex '^([^\{]*{)(*.)(\}[^\}]*)$': Invalid content of \{\}
без -r что то сделала, но тоже не так как надо
[root@localhost:~]# sed '/90, 20, /s!^([^\{]*{)(*.)(\}[^\}]*)$!\1olo\3!' 123
# Starting MAC address (1)
90, 20, {0x01,0x00} \
# MAC address (C00)
50, 8, {0x00,0x0C}
#==========================================================
Уже грешу на сам sed, он у меня идёт вместе с busybox
sed --version
This is not GNU sed version 4.0
может кто то подскажет куда рыть ?