web-dev-qa-db-ja.com

sedを使用してbashの変数を操作できますか?

私のプログラムでは、最初にユーザー入力を取得し、各\の前に/を挿入したいので、これを記述しますが、機能しません。

echo "input a website"
read website

sed '/\//i\/' $website
47
Leo Chan

これを試して:

website=$(sed 's|/|\\/|g' <<< $website)

Bashは実際にこの種の置換をサポートしています 自然に

${parameter/pattern/string}patternの最初の一致をstringに置き換えます。
${parameter//pattern/string}patternのすべての一致をstringに置き換えます。

したがって、次のことができます。

website=${website////\\/}

説明:

website=${website // / / \\/}
                  ^  ^ ^  ^
                  |  | |  |
                  |  | |  string, '\' needs to be backslashed
                  |  | delimiter
                  |  pattern
                  replace globally
106
Eugene Yarmash
echo $website | sed 's/\//\\\//g'

または、読みやすくするために:

echo $website | sed 's|/|\\/|g'
13
Karoly Horvath