用包含变量中的空格的sed替换文本

时间:2017-12-15 07:36:15

标签: linux bash sed

我尝试替换文本文件中的某些文本。在我的脚本中,我存储了要在两个变量中查找和替换的文本:

$currentProductName='hello'
$configProductName='byebye'

用这一行替换:

sed -i'.bak' 's/$currentProductName/$configProductName/g' "$projectFile"

在我的任何变量都包含空格之前,一切正常。如果$configProductName设置为hello world,则sed命令无法按预期工作。

我已经尝试了这个,但它也不起作用:

sed -i'.bak' 's/"$currentProductName"/"$configProductName"/g' "$projectFile"
sed -i'.bak' 's/\$currentProductName/\$configProductName/g' "$projectFile"

如何更改线路以按预期工作?

1 个答案:

答案 0 :(得分:2)

要保留空格,您需要对引号进行双引号并再次使用单引号将其换行。通过这种方式,您可以控制需要扩展前缀为$的变量。

configProductName='hello world'

使用sed操作,如下所示,并在找到符合预期的-i标志后添加sed 's/$currentProductName/'"$configProductName"'/g' file hello world='hello' $configProductName='byebye' 标志。

pg