我正在使用sed
以彩色" is "
替换"'s "
的每个实例。
为此,它通过颜色变量 r 和空白变量 x 包围结果,这些变量按字面解释。 echo -e
然后显示颜色。这里没什么新鲜的。
当我尝试添加撇号(实际上是单引号)时出现问题;如果不弄乱颜色转义码,我无法逃避它。
这是我没有撇号的代码我试图添加:
r='\e[0;31m' # red
x='\e[0m' # reset color
sed 's/ is /\'${r}'s\'${x}'/g' # replace " is " by "'s "
我尝试过双引号,多个反斜杠,但是所有内容都破坏了颜色代码,或者无法逃脱单引号。与此同时,我使用的是真正的撇号('),但它并不是最好的解决方案,因为它在TTY中无法正确呈现。
答案 0 :(得分:1)
如果您想保留单引号,则需要'"'"'
第一个引用结束当前单引号字符串。然后我们将"'"
扩展为单引号。 \'
也会起作用,但看起来不太好。
最后一个单引号再次启动引用的字符串。
您的案例中的另一种选择是"s/ is /${r}'s${x}/g"
(即仅使用双引号)。
但是,你需要使用r='\\e[0;31m'
,因为字符串中的扩展会将一级转义字符串。