Как мне вставить /foo/
после и только после открывающихся скобок?
(bar)
должно стать
(/foo/bar)
в то время как (/baz/bar)
должнонетстановиться(/baz/foo/bar)
решение1
В этом простом случае вы можете попробовать
sed 's,(bar,(/foo/bar,'
решение2
Замысловатый способ, предполагающий, что вы хотите /foo/
добавитьлюбойшаблон в скобках:
$ echo '(bar)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar)
$ echo '(/bar/baz)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar/baz)
В приказе говорится:
Выберите то, что находится в скобках, и запишите это (может начинаться со слеша /
), а затем замените (
или (/
на /foo/
и захваченный шаблон..
решение3
С использованием awk
:
awk '/\(bar/ {sub(/bar/, "/foo/bar"); }1' input
С sed
:
sed -E 's%([(])(bar)%\1/foo/\2%' input
Здесь используются обратные ссылки \1 для (
и \2 для bar
.