Ich suche nach einer Möglichkeit, eine Zeichenfolge in einer Datei durch eine Zeichenfolge zu ersetzen, die einen Schrägstrich enthält, indem ich sed verwende.
connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"
Das Ergebnis ist:
sed: -e Expression #1, Character 32: Unknown option for `s'
Akzeptierte Antwort:
Verwenden Sie in den s
ein anderes Zeichen als Trennzeichen Befehl:
printf '%sn' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"
Oder maskieren Sie die Schrägstriche mit ${var//pattern/replacement}
von ksh93 Parametererweiterungsoperator (wird jetzt auch von zsh
unterstützt , bash
, mksh
, yash
und neuere Versionen von busybox sh
).
printf '%sn' "$srcText" | sed "s/XPLACEHOLDERX/${connect////\/}/"