Je cherche un moyen de remplacer une chaîne dans un fichier par une chaîne contenant une barre oblique en utilisant sed.
connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"
Le résultat est :
sed: -e Expression #1, Character 32: Unknown option for `s'
Réponse acceptée :
Utiliser un autre caractère comme délimiteur dans les s
commande :
printf '%sn' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"
Ou échappez les barres obliques avec le ${var//pattern/replacement}
de ksh93 opérateur d'expansion de paramètre (maintenant également pris en charge par zsh
, bash
, mksh
, yash
et les versions récentes de busybox sh
).
printf '%sn' "$srcText" | sed "s/XPLACEHOLDERX/${connect////\/}/"