使用 sed 用变量替换文件中的文本

使用 sed 用变量替换文件中的文本

我需要用存储在变量中的另一个字符串替换文件中的字符串。
现在我知道

sed -i 's|sourceString|destinationString|g' myTextFile.txt

替换一个字符串,但是如果目标字符串是硬编码字符串和变量的组合怎么办?

myString="this/is_an?Example=String"
sed -i 's|sourceString|${myString}destinationString|g' myTextFile.txt

后者不起作用,因为$myString它没有被解释为变量。

答案1

Bash 不解释单引号字符串中的变量。这就是它不起作用的原因。

myString="this/is_an?Example=String"
sed -i "s|sourceString|${myString}destinationString|g" myTextFile.txt

会工作。

或者,如果由于其他原因需要单引号,那么您可以将字符串连接在一起,它们将被解释为一个:

myString="this/is_an?Example=String"
sed -i 's|sourceString|'"$myString"'destinationString|g' myTextFile.txt

相关内容