当包含撇号时如何用另一个字符串替换字符串?

How to replace string by another string when they include appostrophes?

sed -i 's/cfg._sections['styles']/t(cfg._sections['styles'])/g' *

我试过了",但没用。

我建议在正则表达式中转义特殊字符 []

sed -i "s/cfg._sections\['styles'\]/t(cfg._sections\['styles'\])/g" *

如果您的输入包含 .,那么也先转义 .

这可能对你有用 (GNU sed):

sed -i 's/cfg\._sections\['\''styles'\''\]/t(&)/g' file

用单引号将 sed 命令括起来。

正则表达式LHS的.[]表示任意字符,字符类的开闭见here , 因此必须通过在 \.

前面加上 escaped/quoted

习语 '\'' 可用于插入 ',这将关闭开头 ' 并在 shell 级别引入 '(再次escaped/quoted) 接着是另一个开口 '.

正则表达式 RHS 中的 & 代表正则表达式 LHS 捕获的内容。

N.B。术语 LHS 和 RHS 分别代表左侧和右侧 (s/LHS/RHS/)。