如何使用sed用双引号替换字符串
How to replace string with double quotes using sed
我的 yaml 文件中有一个字符串
prod:1.2.3"
在我的bash
OLD_VERSION=1.2.3
NEW_VERSION=1.2.4
但我不想用
sed -i "" "s|$OLD_VERSION|$NEW_VERSION|g" test.txt
因为在其他一些 place.So 中可能会有 1.2.3,我想做的是
将1.2.3"
替换为1.2.4"
如何在sed命令中添加"
你可以使用这个 sed
:
sed "s/:${OLD_VERSION//./\.}\"/:${NEW_VERSION//./\.}\"/g" file.yml
prod:1.2.4"
对于 2 个变量的给定值,它将执行此命令:
sed 's/:1\.2\.3"/:1\.2\.4"/g' file.yml
${OLD_VERSION//./\.}
:用 \.
替换每个点,因为点匹配任何字符
此字符串之前的 :
和之后的 "
将确保我们匹配确切的字符串 :1.2.3"
而不是 11.2.3
或 1.2.33
我的 yaml 文件中有一个字符串
prod:1.2.3"
在我的bash
OLD_VERSION=1.2.3
NEW_VERSION=1.2.4
但我不想用
sed -i "" "s|$OLD_VERSION|$NEW_VERSION|g" test.txt
因为在其他一些 place.So 中可能会有 1.2.3,我想做的是
将1.2.3"
替换为1.2.4"
如何在sed命令中添加"
你可以使用这个 sed
:
sed "s/:${OLD_VERSION//./\.}\"/:${NEW_VERSION//./\.}\"/g" file.yml
prod:1.2.4"
对于 2 个变量的给定值,它将执行此命令:
sed 's/:1\.2\.3"/:1\.2\.4"/g' file.yml
${OLD_VERSION//./\.}
:用\.
替换每个点,因为点匹配任何字符
此字符串之前的 :
和之后的"
将确保我们匹配确切的字符串:1.2.3"
而不是11.2.3
或1.2.33