Jak zamienić ciąg na ciąg zawierający ukośnik z sed?


13

Szukam sposobu na zamianę ciągu w pliku na ciąg zawierający ukośnik za pomocą sed.

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

Wynik to:

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

Odpowiedzi:


31

Użyj innego znaku jako separatora w spoleceniu:

printf '%s\n' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"

Lub ucieczki ukośniki z ksh93 męska ${var//pattern/replacement}operatora ekspansji parametr (teraz również wspierany przez zsh, bash, mksh, yashi nowszych wersjach Busybox sh).

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

+1 za drugi sposób. pierwszy nie działa na Freebsd.
ibrahim

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.