Estoy buscando una forma de reemplazar una cadena en un archivo con una cadena que contiene una barra inclinada usando sed.
connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"
El resultado es:
sed: -e Expression #1, Character 32: Unknown option for `s'
Respuesta aceptada:
Use otro carácter como delimitador en los s
comando:
printf '%sn' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"
O escape de las barras con ${var//pattern/replacement}
de ksh93 operador de expansión de parámetros (ahora también soportado por zsh
, bash
, mksh
, yash
y versiones recientes de busybox sh
).
printf '%sn' "$srcText" | sed "s/XPLACEHOLDERX/${connect////\/}/"