GNU/Linux >> Linux Esercitazione >  >> Linux

Come sostituire una stringa con una stringa contenente una barra con Sed?

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

Linux
  1. Come sostituire una stringa in un file?

  2. Come sostituire il testo come sed con python?

  3. Trova tutti i file con nome contenente una stringa

  4. Come sostituire una stringa in più file nella riga di comando di Linux

  5. Comando tr - come sostituire la stringa \n con una nuova riga effettiva (\n)

Come utilizzare sed per trovare e sostituire la stringa nei file

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Come utilizzare Sed per trovare e sostituire una stringa in un file

Sostituisci una parola con un'altra in bash

Come usare sed per sostituire la variabile di un file di configurazione?

Come sostituire in modo ricorsivo i caratteri con sed?