Вставить текст после первой буквы шаблона

Вставить текст после первой буквы шаблона

Как мне вставить /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.

Связанный контент