如何使用yq 4更新YAML数组中指定id属性条目的version字段?
操作方法
你使用的是yq v4版本,直接用select筛选匹配的数组元素后更新对应字段即可,操作命令如下:
# 测试修改效果(不会改动原文件),将VERSION替换为你要更新的目标版本号,yaml文件名替换为你实际的文件名 yq e '.jobs.my-job.steps[] |= (select(.id == "step2") | .with.version = VERSION)' 你的配置文件名.yaml # 确认修改正确后,加 -i 参数直接写入原文件,示例中把版本更新为2.1.0 yq e '.jobs.my-job.steps[] |= (select(.id == "step2") | .with.version = "2.1.0")' action.yaml -i
命令说明
e是yq v4版本的表达式求值参数,4.18及之后版本可以省略,你使用的4.3.1版本必须保留该参数.jobs.my-job.steps[]遍历steps下的所有步骤数组元素|=是更新赋值操作符,会把左侧匹配到的元素应用右侧的表达式逻辑select(.id == "step2")筛选条件,仅保留id字段值为step2的步骤元素.with.version = "2.1.0"给筛选出的元素的with下的version字段赋值为新的版本号,若版本号为字符串类型需要加引号,数值类型可省略引号-i为原位修改参数,添加后会直接修改原文件,不加则仅在终端输出修改后的内容用于校验
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

