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


13

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'

回答:


31

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

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

それともは、ksh93さんとスラッシュをエスケープ${var//pattern/replacement}パラメータ拡張演算子(今もでサポートされているzshbashmkshyashとbusyboxの最近のバージョンsh)。

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

2番目の方法の場合は+1。最初のものはfreebsdでは動作しません。
イブラヒム14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.