私のプログラムでは、最初にユーザー入力を取得し、各\
の前に/
を挿入したいので、これを記述しますが、機能しません。
echo "input a website"
read website
sed '/\//i\/' $website
これを試して:
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
echo $website | sed 's/\//\\\//g'
または、読みやすくするために:
echo $website | sed 's|/|\\/|g'