GNU/Linux >> Znalost Linux >  >> Linux

Jak nahradit řetězec řetězcem obsahujícím lomítko se Sed?

Hledám způsob, jak nahradit řetězec v souboru řetězcem, který obsahuje lomítko pomocí sed.

connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"

Výsledek je:

sed: -e Expression #1, Character 32: Unknown option for `s'

Přijatá odpověď:

Použijte jiný znak jako oddělovač v s příkaz:

printf '%sn' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"

Nebo opusťte lomítka pomocí ksh93 ${var//pattern/replacement} operátor rozšíření parametrů (nyní také podporován zsh , bash , mksh , yash a nejnovější verze busyboxu sh ).

printf '%sn' "$srcText" | sed "s/XPLACEHOLDERX/${connect////\/}/"

Linux
  1. Jak dosáhnout přenositelnosti pomocí Sed -i (úpravy na místě)?

  2. Jak použít Sed k výměně víceřádkového řetězce?

  3. Jak použít sed k nahrazení proměnné konfiguračního souboru?

  1. Nahraďte chytré uvozovky příkazem sed pro Linux

  2. Jak nahradit řetězec v souboru (souborech)?

  3. Jak odstranit znak \r pomocí sed

  1. Jak použít Sed nebo Ex k nahrazení bloku (víceřádkového kódu) novým blokem textu (kódu)?

  2. Použít Sed k nahrazení řetězce řetězcem obsahujícím název adresáře (tj. lomítko „/“)?

  3. Jak nahradit text podobný sedu pythonem?