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

13

我在 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两个主要版本,而4.7.1确实具有“-i”选项。 - flyx
1
你是否使用 Python yq 而不是 Go 版本的 mikefarah/yq? - Inian
1个回答

18

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接