【发布时间】:2020-07-12 14:22:54
【问题描述】:
我正在尝试使用 sed 在我的 yaml 文件中替换一个新版本,但我无法弄清楚该语句中缺少什么。
我要转换
version: "x.x.x"
到
version: "z.z.z"
这是我目前的 sed 声明:
sed -i "" "s|version: "[[:digit:]].[[:digit:]].[[:digit:]]"\|version: "${VERSION}"|" file.yaml
【问题讨论】:
-
试试:
sed "s~version: \"[[:digit:]]\.[[:digit:]]\.[[:digit:]]\"~version: \"$VERSION"~" -
对于实际使用,我会为此使用
yq(或使用几个可用 YAML 库之一的 Python 脚本)而不是sed。 YAML 可以用许多语法不同的方式编写,但语义相同;sed只能处理一个公式,而 YAML 感知工具可以正确读取和修改 任何 等效文档。