sedを使用して文字列をスラッシュを含む文字列に置き換える方法は?

sedを使用して文字列をスラッシュを含む文字列に置き換える方法は?

sedを使用して、ファイル内の文字列をスラッシュを含む文字列に置き換える方法を探しています。

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

結果:

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

答え1

コマンドで他の文字を区切り文字として使用しますs

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

または、ksh93のパラメータ拡張演算子を使用してスラッシュをエスケープします(現在、最新バージョンのbusyboxも${var//pattern/replacement}これをサポートしています)。zshbashmkshyashsh

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

答え2

シェルがそれをサポートしている場合:

"${srcText/XPLACEHOLDERX/$connect}"

関連情報