You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed通过变量向yaml文件postgresql节点下新增字段并解决报错

错误原因

你之前的命令报错主要有两个问题:

  1. 你在双引号内对${versionentry}的$加了反斜杠转义,导致shell无法正常展开变量,sed会将${versionentry}识别为字面量而非变量值;同时你没有给新增的配置项加缩进,即使执行成功也会破坏YAML的层级结构。
  2. 你使用/作为sed s命令的分隔符,若后续变量值中出现/字符就会和分隔符冲突,触发unknown option to s报错。

正确命令

先定义好你的变量:

connector="postgresql"
versionentry="version: 13.01"

执行以下sed命令即可完成修改:

sed -r "s|^(\s*${connector}\s*:\s*).*|&\n  ${versionentry}|" -i dsn-details.yaml

这里做了两处调整:

  • 将sed s命令的分隔符换成了|,避免和变量中可能出现的/冲突
  • 去掉了变量前的转义符,让shell正常展开变量,同时在变量前加了2个空格,保证YAML的缩进层级正确。

内容的提问来源于stack exchange,提问作者COBHC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:27:04