如何使用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.31.2.33