【问题标题】:Using yq to edit yaml files (--in-place, -i flag)使用 yq 编辑 yaml 文件(--in-place, -i 标志)
【发布时间】:2021-04-26 19:20:22
【问题描述】:

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

authentication:
  anonymous:
    enabled: false

但我们想要这个

authentication:
  anonymous:
    enabled: true

我们已经尝试运行

sudo yq -y ".authentication.anonymous.enabled |= true" sample.yml

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

sudo yq -y ".authentication.anonymous.enabled |= true" sample.yml > newfile.yml
sudo cp newfile.yml sample.yml

所以基本上我们创建了我们想要的正确输出,但只是将其推送到一个新文件中,然后将新内容复制到旧文件中(我知道这是一个完整的考验)。必须有更好的方法来完成此操作...有人可以告诉我如何正确使用 yq --in-place 标志编辑文件吗?

【问题讨论】:

  • 也许可以尝试升级,因为 2.12.0 是当前 4.7.1 的两个主要版本,它确实有 -i
  • 你使用的是 Python yq 而不是 Go 版本的 mikefarah/yq 吗?

标签: yaml edit-in-place yq


【解决方案1】:

yq - Go 实现

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

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


yq - Python 实现

yq 确实提供了 yaml 文件的就地编辑功能:

来自 README.MD:

 With -y/-Y, files can be edited in place like with sed -i: yq -yi .foo=1 *.yml

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

【讨论】:

    猜你喜欢
    • 2022-12-02
    • 1970-01-01
    • 2020-12-14
    • 2015-01-31
    • 1970-01-01
    • 2022-01-25
    • 2015-06-13
    • 2021-05-14
    相关资源
    最近更新 更多