gpt4 book ai didi

yaml - 使用 yq 更新 yaml 数组

转载 作者:行者123 更新时间:2023-12-02 02:23:01 50 4
gpt4 key购买 nike

我有以下 yaml,我想替换命令字段

apiVersion: batch/v1
kind: Job
metadata:
name: test004
spec:
template:
spec:
containers:
- name: "eee"
image: "test"
command: ["a", "b", "c"]

想要

apiVersion: batch/v1
kind: Job
metadata:
name: test004
spec:
template:
spec:
containers:
- name: "eee"
image: "test"
command: ["a", "b", "c", "d"]
yq  -i n --style  myfile.yaml 'spec.template.spec.containers[0].command' "["a", "b", "c","d"]"

有没有办法用 yq 来实现这一点,我尝试使用样式但没有成功,如果我将其更改为简单字符串,它可以工作,但当我想传递完整数组时则不行,知道吗?

最佳答案

您可以使用字段[+]表示法append fields in yq v3 。所以你的命令结果是

yq --style double w -i myfile.yaml 'spec.template.spec.containers[0].command[+]' "c"

上述命令将条目“c”附加到数组中。

或者,如果您想更新整个数组命令,您可以在 v4 中执行。请注意,这会在单独的行中创建数组条目,而不是OP中显示的行。请参阅YAML Multi-Line Arrays

yq e '.spec.template.spec.containers[0].command |= ["a", "b", "c","d"] | ..style="double"' yaml

请注意,yq v4 已经存在并且支持更强大的路径表达式和操作。请参阅Upgrading from v3获取说明

关于yaml - 使用 yq 更新 yaml 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66138474/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com