sedのスラッシュとバックスラッシュ

sedのスラッシュとバックスラッシュ

sedスラッシュをバックスラッシュとスラッシュに変更するために使用したいと思います(例:/->)\/。しかし、これはうまくいきません。以下は小さな例です。

#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s/\//\\\//g"

最初の3行の出力は想定どおりです。しかし、最後はうまくいきません。なぜ?最後の部分を修正する方法は?

ベストアンサー1

使用する式の周りに一重引用符を使用してください。

sed 's/\//\\\//g'

二重引用符には\特別な意味があるので、逆スラッシュを使用する必要があります。

sed "s/\//\\\\\//g"

しかし、区切り文字を変更する方がよりきれいになります。

sed 's=/=\\/=g'
sed "s=/=\\\/=g"

おすすめ記事