【发布时间】:2021-12-07 00:33:30
【问题描述】:
我有一个如下所示的 yaml 文件 (dsn-details.yaml):
postgresql:
Database: postgres
Servername: server
Username: user
Password: pwd
Port: 5432
我想在 postgresql 下添加新条目并想要这样的东西:
postgresql:
version: 13.01
Database: postgres
Servername: server
Username: user
Password: pwd
Port: 5432
我可以使用以下命令来做同样的事情:
connector="postgresql"
sed -r "s/^(\s*${connector}\s*:\s*).*/&\n\ version: 13.01/" -i dsn-details.yaml
但是,我不想在上述 sed 命令中硬编码“版本:13.01”部分。我想使用如下变量传递它:
versionentry="version: 13.01"
sed -r "s/^(\s*${connector}\s*:\s*).*/&\n\${versionentry}/" -i dsn-details.yaml
在这种情况下,我得到了错误:
sed: -e expression #1, char 45: unknown option to `s'
任何人都可以帮助提供确切的命令
【问题讨论】:
-
可以下载安装YAML解析工具
yq吗? mikefarah.gitbook.io/yq/#install ? -
无法在 debain 10 上下载 yq
-
您可以直接从发布页面下载 32 位或 64 位二进制文件 - github.com/mikefarah/yq/releases/tag/v4.13.4 取决于您的 CPU 架构