我有一个yaml配置,我想用一个新值替换其中一个字段?
下面是一个yaml配置的例子:
application: "app_name"
pipeline: "app-pipeline"
parameters:
spinnaker_environment: "production"
perform_cleanup: false
build_image_tag: "foobar"
我想把build_image_tag
字段下的"foobar"替换成一个不同的值,比如"latest",我该怎么做?
我尝试了以下方法:
sed '/^parameters:/{n;s/build_image_tag:.*/build_image_tag: "latest"/;}' exec.yml
但这似乎并不起作用,yaml的配置应该是这样的:
application: "app_name"
pipeline: "app-pipeline"
parameters:
spinnaker_environment: "production"
perform_cleanup: false
build_image_tag: "latest"
2条答案
按热度按时间zmeyuzjn1#
对于
go yq
或python yq
,正确的工具:JSON
,yq
使用与jq
相同的语法-i
与sed -i
相同:动态替换mkh04yzy2#
在
sed
中有一个“S”命令,其工作原理如下:对于您的示例,它将是这样的:
我建议创建一个模板文件,如下所示:
然后用
sed
来修改它,如下所示:使用变量: