Sto cercando un modo per sostituire una stringa in un file con una stringa che contiene una barra usando sed.
connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"
Il risultato è:
sed: -e Expression #1, Character 32: Unknown option for `s'
Risposta accettata:
Usa un altro carattere come delimitatore nelle s
comando:
printf '%sn' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"
Oppure sfuggi alle barre con ${var//pattern/replacement}
di ksh93 operatore di espansione dei parametri (ora supportato anche da zsh
, bash
, mksh
, yash
e versioni recenti di busybox sh
).
printf '%sn' "$srcText" | sed "s/XPLACEHOLDERX/${connect////\/}/"