首页 > 解决方案 > 如何用 sed 的变量替换单引号字符串?

问题描述

我正在尝试替换文件中的某些文本,如标题中所述。我尝试了什么:

newdir=/dir/to/my/file
sed -i "s/'MyDir'/${newdir}/g" myconf.conf

上面的命令给出了这个错误:

's' 的未知选项

标签: linuxbashsedreplace

解决方案


问题是它$newdir包含/字符,所以你的sed命令最终看起来像s/'MyDir'//dir/to/my/file/g,这不起作用——第一个/有效地终止了你的sed表达式,其他的都是垃圾。

幸运的是,sed让我们使用任何字符作为s命令的分隔符,因此您可以改为:

sed -i "s|'MyDir'|${newdir}|g" myconf.conf

推荐阅读