使用。 。 。交換「\/」

使用。 。 。交換「\/」

/tmp/testing置き換えたい文字列があります。\/tmp\/testing

sed次のようにうまく動作します。

echo testdir=/tmp/testing | sed 's/\//\\\//g'
testdir=\/tmp\/testing

ただし、後で使用したい変数にそれを入れようとすると、次のエラーが発生します。

myvar=`echo testdir=/tmp/testing | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'

どんなアイデアがありますか?

ベストアンサー1

バックティックは`...`間接レベルを追加し、別の\エスケープセットが必要です。これを使用すると、うまく動作し、$( ... )期待どおりに動作します。

myvar=$(echo testdir=/tmp/testing | sed 's/\//\\\//g')
echo "$myvar"
testdir=\/tmp\/testing

バックティックの使用にこだわると、次のように動作します。

myvar=`echo testdir=/tmp/testing | sed 's/\//\\\\\//g'`
echo "$myvar"
testdir=\/tmp\/testing

おすすめ記事