Como eu poderia inserir /foo/
depois e somente depois de abrir os colchetes?
(bar)
Deve se tornar
(/foo/bar)
enquanto (/baz/bar)
deverianãotornar-se(/baz/foo/bar)
Responder1
Neste caso simples, você poderia tentar
sed 's,(bar,(/foo/bar,'
Responder2
Uma maneira complicada, supondo que você queira /foo/
adicionarqualquerpadrão entre parênteses:
$ echo '(bar)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar)
$ echo '(/bar/baz)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar/baz)
O comando diz:
Selecione o que está entre parênteses e capture-o (pode começar com uma barra /
) e substitua (
ou (/
por /foo/
e o padrão capturado.
Responder3
Usando awk
:
awk '/\(bar/ {sub(/bar/, "/foo/bar"); }1' input
Com sed
:
sed -E 's%([(])(bar)%\1/foo/\2%' input
Isso usa referências anteriores \1 para (
e \2 para bar
.