首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有多个文档的YQ编辑文件

有多个文档的YQ编辑文件
EN

Stack Overflow用户
提问于 2022-11-21 09:08:57
回答 2查看 30关注 0票数 1

我有一个有两个文件的YAML文件

代码语言:javascript
复制
# template.yaml

a : 1
---
b : 2

我正在尝试编辑YAML文件的位置。我试过用

代码语言:javascript
复制
# yq4

yq -i '
    select(documentIndex == 0) | 
    .a = 3 |
    select(documentIndex == 1) |
    .b = 4
' template.yaml

但发现这输出了一个空文件。我认为select(documentIndex == 0) | .a = 3的输出是一个单独的文档,当通过管道传输到select(documentIndex == 1)时,结果是一个空文档。

在yq3中,我可以通过编写

代码语言:javascript
复制
#yq3

yq w -d1 .a 3 | yq w -d2 .b 4` > template.yaml

在yq4中是否存在与此yq3命令等价的命令?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-21 09:51:40

你说得对,为什么它不适用于mikefarah/yq v4。一个更简单的方法就是去做

代码语言:javascript
复制
yq 'select(di == 0).a  = 3  | select(di == 1).b = 5'  yaml

在验证stdout的内容之前,不建议使用就地替换标志。以后一定要加进去。

票数 1
EN

Stack Overflow用户

发布于 2022-11-21 10:09:42

我想出了另一种更迂回的方法。

我们可以分割文件,然后合并到一起。

代码语言:javascript
复制
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

事实证明,不同的文件是以文件形式读取和写入的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74516500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档