【问题标题】:How to replace string with double quotes using sed如何使用sed用双引号替换字符串
【发布时间】:2022-02-18 01:32:48
【问题描述】:

我的 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

因为在其他地方可能会有 1.2.3。所以我想做的是

1.2.3" 替换为1.2.4"

如何在 sed 命令中添加"

【问题讨论】:

  • 不正确的欺骗,因为 OP 正在尝试使用 sed 中的 shell 变量,这些变量需要在 shell 中转义,然后才能在 shell 中进行评估。开始: 和结束" 的存在也特定于这个问题

标签: sed


【解决方案1】:

你可以使用这个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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2020-03-27
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多