我有一个有两个文件的YAML文件
# template.yaml
a : 1
---
b : 2我正在尝试编辑YAML文件的位置。我试过用
# yq4
yq -i '
select(documentIndex == 0) |
.a = 3 |
select(documentIndex == 1) |
.b = 4
' template.yaml但发现这输出了一个空文件。我认为select(documentIndex == 0) | .a = 3的输出是一个单独的文档,当通过管道传输到select(documentIndex == 1)时,结果是一个空文档。
在yq3中,我可以通过编写
#yq3
yq w -d1 .a 3 | yq w -d2 .b 4` > template.yaml在yq4中是否存在与此yq3命令等价的命令?
发布于 2022-11-21 09:51:40
你说得对,为什么它不适用于mikefarah/yq v4。一个更简单的方法就是去做
yq 'select(di == 0).a = 3 | select(di == 1).b = 5' yaml在验证stdout的内容之前,不建议使用就地替换标志。以后一定要加进去。
发布于 2022-11-21 10:09:42
我想出了另一种更迂回的方法。
我们可以分割文件,然后合并到一起。
yq 'select(documentIndex == 0) | .a = 3' > doc_0.yaml
yq 'select(documentIndex == 1) | .b = 4' > doc_0.yaml
yq eval-all '. as $item' doc_0.yaml doc_1.yaml > $output.yaml事实证明,不同的文件是以文件形式读取和写入的。
https://stackoverflow.com/questions/74516500
复制相似问题