Como substituir uma string por uma string contendo slash com sed?

14

Eu estou procurando uma maneira de substituir uma string em um arquivo com uma string que contenha uma barra usando sed.

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

o resultado é

sed: -e Expression #1, Character 32: Unknown option for 's'
    
por martin 01.06.2012 / 11:47

2 respostas

30

Use outro caractere como delimitador no comando s :

echo $srcText | sed "s|XPLACEHOLDERX|$connect|"

Ou escape das barras com a expansão de parâmetros:

echo $srcText | sed "s/XPLACEHOLDERX/${connect//\//\/}/"
    
por 01.06.2012 / 11:53
2

Se o seu shell for compatível:

"${srcText/XPLACEHOLDERX/$connect}"
    
por 02.06.2012 / 06:02

Tags