在我的程序中,我想先获得用户输入,然后在每个/
之前插入一个\
,所以我写这个,但它不起作用。我可以使用sed来操纵bash中的变量吗?
echo "input a website"
read website
sed '/\//i\/' $website
在我的程序中,我想先获得用户输入,然后在每个/
之前插入一个\
,所以我写这个,但它不起作用。我可以使用sed来操纵bash中的变量吗?
echo "input a website"
read website
sed '/\//i\/' $website
试试这个:
website=$(sed 's|/|\\/|g' <<< $website)
击居然还支持这种替代natively的:
${parameter/pattern/string}
- 与string
取代pattern
的第一场比赛。
${parameter//pattern/string}
- 将pattern
的所有匹配项替换为string
。
因此,你可以这样做:
website=${website//\//\\/}
echo $website | sed 's/\//\\\//g'
,或者更好的可读性:
echo $website | sed 's|/|\\/|g'
它运作良好。请你介意解释这是/ \ // \\\ // g' 和这个|/| \\/| g'? –
'searchreplacecommand | source | target | global(all matches)'你可以在其中使用任何字符作为分隔符('|')。传统上'/'用于分隔符 –
然而当我使用“”和变量。它不插入任何东西。你能弄清楚原因吗?谢谢 –
本机版本并没有为我带大的可变内容'命令来长工作:' – Artistan