¿Cómo podría insertar /foo/
después y sólo después de abrir corchetes?
(bar)
debe convertirse
(/foo/bar)
mientras (/baz/bar)
deberíanoconvertirse(/baz/foo/bar)
Respuesta1
En este caso simple, puedes intentar
sed 's,(bar,(/foo/bar,'
Respuesta2
Una forma complicada, asumiendo que desea /foo/
agregarcualquierpatrón entre paréntesis:
$ echo '(bar)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar)
$ echo '(/bar/baz)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar/baz)
El comando dice:
Seleccione lo que está entre paréntesis y captúrelo (podría comenzar con una barra diagonal /
) y reemplace (
o (/
con /foo/
y el patrón capturado.
Respuesta3
Usando awk
:
awk '/\(bar/ {sub(/bar/, "/foo/bar"); }1' input
Con sed
:
sed -E 's%([(])(bar)%\1/foo/\2%' input
Esto utiliza referencias inversas \1 para (
y \2 para bar
.