gpt4 book ai didi

yaml - 使用 yq v4.x 在 yaml 文件中插入多行一个属性

转载 作者:行者123 更新时间:2023-12-04 14:54:35 25 4
gpt4 key购买 nike

input.yaml 中存储了一个动态属性,我想将它插入到一个已存在的 yaml 文件中(命名为 original.yaml)。该属性有多行。

这两个文件看起来像:输入.yaml:

- name: bob
spec: {}

原始.yaml:

spec:
names:
- name: alice
spec: {}

我的目标是将 input.yaml 内容放在 original.yaml spec.names 下。我尝试使用 yq 版本 4:

env=$(cat input.yaml)
yq eval '.spec.names + strenv(env)' original.yaml > result.yaml

我得到的:

spec:
names:
- name: alice
spec: {}
- |-
- name: bob
spec: {}

第 5 行有一个不需要的 - |-,我希望得到以下输出:

spec:
names:
- name: alice
spec: {}
- name: bob
spec: {}

任何建议将不胜感激。

最佳答案

这个想法是对的,但你不应该使用 strenv() 函数,它将你的输入格式化为 YAML 字符串类型。您的 names 记录是一个 map 数组,因此您需要保留原始类型,只需使用 env

因此,有了它并避免 cat 并使用 shell 输入重定向(应该在 bash/zsh/ksh 上工作),你可以做到

item="$(< input.yaml)" yq e '.spec.names += env(item)' original.yaml

关于yaml - 使用 yq v4.x 在 yaml 文件中插入多行一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68321476/

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