我尝试替换文本文件中的某些文本。在我的脚本中,我存储了要在两个变量中查找和替换的文本:
$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"
如何更改线路以按预期工作?
答案 0 :(得分:2)
要保留空格,您需要对引号进行双引号并再次使用单引号将其换行。通过这种方式,您可以控制需要扩展前缀为$
的变量。
configProductName='hello world'
使用sed
操作,如下所示,并在找到符合预期的-i
标志后添加sed 's/$currentProductName/'"$configProductName"'/g' file
hello world='hello'
$configProductName='byebye'
标志。
pg