首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用yq编辑yaml文件(--in-place,-i标志)

使用yq编辑yaml文件(--in-place,-i标志)
EN

Stack Overflow用户
提问于 2021-04-27 03:20:22
回答 1查看 1.2K关注 0票数 2

我对yq版本2.12.0的原地编辑标志有一个很大的问题。我们正在尝试更新其中一个.yaml脚本中的变量的值。之前是这样的..。

代码语言:javascript
复制
authentication:
  anonymous:
    enabled: false

但是我们想要这个

代码语言:javascript
复制
authentication:
  anonymous:
    enabled: true

我们试着跑

代码语言:javascript
复制
sudo yq -y ".authentication.anonymous.enabled |= true" sample.yml

但是它会覆盖整个文件并使其为空:/我们当前的解决方法是运行

代码语言:javascript
复制
sudo yq -y ".authentication.anonymous.enabled |= true" sample.yml > newfile.yml
sudo cp newfile.yml sample.yml

因此,基本上我们创建了我们想要的正确输出,但只是将其推入一个新文件中,然后将新内容复制到旧文件中(我知道这是一个完整的考验)。肯定有更好的方法来完成this...Can,谁来告诉我如何使用yq --in-place标志正确地编辑文件?

EN

回答 1

Stack Overflow用户

发布于 2021-07-08 00:54:06

yq - Go实现

使用yq可以就地编辑文件:

yq -i e '.authentication.anonymous.enabled |= true' sample.yml

yq - Python实现

yq不提供对yaml文件的就地编辑,而且可能永远不会这样做,因为它是jq的包装器。您可以使用sponge ( GNU moreutils的一部分)来解决您的问题:

yq -y '.authentication.anonymous.enabled |= true' sample.yml | sponge sample.yml

参见jq - FAQ (搜索“如何实现JSON文件的”就地“编辑?”)。

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

https://stackoverflow.com/questions/67272591

复制
相关文章

相似问题

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