问题:我有一个包含字符的变量,我想在存储在变量中的同一个字符串中添加另一个字符
例。 “[blahblahblah]” ---> “\[blahblahblah\]”
目前的解决方案:目前我通过两步完成我想要的,每一步攻击一个支架
例如
temp=[blahblahblah]
firstEscaped=$(echo $temp | sed s#'\['#'\\['#g)
fullyEscaped=$(echo $firstEscaped | sed s#'\]'#'\\]'#g)
这给了我想要的结果,但我觉得我可以使用 capturing groups 在一行中完成它.我只是运气不好,我快筋疲力尽了。我遇到的大多数示例都涉及想要提取括号之间的文本,而不是我正在尝试做的事情。 This是我最近的尝试无济于事。有什么想法吗?
最佳答案
可能有更有效的方法,(只有 1 个 s/s/r/
和更高级的 reg-ex),但是这有效,给定您的样本输入
fully=$(echo "$temp" | sed 's/\([[]\)/\\\1/;s/\([]]\)/\\\1/') ; echo "$fully"
输出
\[blahblahblah\]
请注意,可以将多个 sed
操作链接在一起,由 ;
分隔,或者如果在 sed
脚本文件中,由空白分隔线。
阅读有关使用 \(...\)
对并按数字引用它们的 sed
捕获组,即 \1
。
健康教育
关于regex - 使用 sed 查找和替换变量中的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46802416/