繁体   English   中英

我可以使用 sed 来操作 bash 中的变量吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM