GNU/Linux >> Tutoriels Linux >  >> Linux

Comment remplacer une chaîne par une chaîne contenant une barre oblique avec Sed ?

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////\/}/"

Linux
  1. Comment remplacer une chaîne dans un ou plusieurs fichiers ?

  2. Comment atteindre la portabilité avec Sed -i (édition sur place) ?

  3. Comment utiliser Sed pour remplacer une chaîne multiligne ?

  4. Comment utiliser Sed ou Ex pour remplacer un bloc (code multiligne) par un nouveau bloc de texte (code) ?

  5. Comment remplacer sed comme texte par python?

Remplacez les guillemets intelligents par la commande Linux sed

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

Comment utiliser la commande SED pour rechercher et remplacer une chaîne dans des fichiers

Utiliser Sed pour remplacer une chaîne par une chaîne contenant un nom de répertoire (c'est-à-dire une barre oblique "/") ?

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier

Comment remplacer récursivement les caractères par sed ?