我有一个名为foo.yaml的简单yaml文件
foo:
- a
- c
bar:
- foo: bar
foo2: bar2我试图按字母顺序向b添加一个新值( foo )。我可以用+=增加这个值,但它不会按字母顺序排列
$ yq '.foo += "b"' foo.yaml
foo:
- a
- c
- b
bar:
- foo: bar
foo2: bar2如果我使用+,我可以使用sort,但我只获得原始值。例如:
$ yq '.foo + "b" | sort()' foo.yaml
- a
- b
- c我试图将其设置为bash变量,然后将其与=一起使用,但它显示为多行文本。
$ variable=$(yq '.foo + "b" | sort()' foo.yaml)
$ yq ".foo = \"$variable\"" foo.yaml
foo: |-
- a
- b
- c
bar:
- foo: bar
foo2: bar2是否有更简单的方法将一个新值按字母顺序插入到foo中,同时保持yaml的其余部分的灵活性?
发布于 2022-07-29 04:54:07
您获得原始值的原因是您告诉yq遍历“foo”。相反,试着:
yq '.foo = (.foo + "b" | sort)' file.yaml 产量:
foo:
- a
- b
- c
bar:
- foo: bar
foo2: bar2解释:
免责声明:我写了yq
https://stackoverflow.com/questions/73159412
复制相似问题