regex - 使用 sed 查找和替换变量中的特定字符

标签 regex linux bash sed capturing-group

问题:我有一个包含字符的变量,我想在存储在变量中的同一个字符串中添加另一个字符

例。 “[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/

相关文章:

java - 如何在 java 中使用正则表达式查找字符串中最后一次出现的字符集?

java - 使用正则表达式删除前导零但保留减号

python - 执行 python 文件-没有这样的文件或目录

python - 无法在容器内启动 selenium 测试,WebDriverException :Chrome failed to start: exited abnormally

regex - VBA 使用正则表达式查找具有值范围的字符串,并替换为该范围内的每个值

javascript - 如何使用正则表达式查找所有猫

c - 关于使用低级函数

python - 仅在 sys.argv[1] 存在时执行代码

linux - 恢复 .bak 文件

linux - 时间通过领先的 sudo 调用产生奇怪的结果