In my program, I would like to first get the user input, and insert a \
before each /
so I write this, but it doesn't work.
echo "input a website"
read website
sed '/\//i\/' $website
In my program, I would like to first get the user input, and insert a \
before each /
so I write this, but it doesn't work.
echo "input a website"
read website
sed '/\//i\/' $website
Try this:
website=$(sed 's|/|\\/|g' <<< $website)
Bash actually supports this sort of replacement natively:
${parameter/pattern/string}
— replace the first match of pattern
with string
.
${parameter//pattern/string}
— replace all matches of pattern
with string
.
Therefore you can do:
website=${website////\\/}
Explanation:
website=${website // / / \\/}
^ ^ ^ ^
| | | |
| | | string, '\' needs to be backslashed
| | delimiter
| pattern
replace globally
echo $website | sed 's/\//\\\//g'
or, for better readability:
echo $website | sed 's|/|\\/|g'