[英]Can I use sed to manipulate a variable in bash?
在我的程序中,我想首先获取用户输入,并在每个/
之前插入一个\
所以我写了这个,但它不起作用。
echo "input a website"
read website
sed '/\//i\/' $website
尝试这个:
website=$(sed 's|/|\\/|g' <<< $website)
Bash 实际上原生支持这种替换:
${parameter/pattern/string}
— 用string
替换pattern
的第一个匹配项。
${parameter//pattern/string}
— 用string
替换所有匹配的pattern
。
因此你可以这样做:
website=${website////\\/}
解释:
website=${website // / / \\/}
^ ^ ^ ^
| | | |
| | | string, '\' needs to be backslashed
| | delimiter
| pattern
replace globally
echo $website | sed 's/\//\\\//g'
或者,为了更好的可读性:
echo $website | sed 's|/|\\/|g'
您还可以使用Parameter-Expansion替换变量中的子字符串。 例如:
website="https://stackoverflow.com/a/58899829/658497"
echo "${website//\//\\/}"
https:\/\/stackoverflow.com\/a\/58899829\/658497
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.