如何使用 yq 在 YAML 文件中 Add/Delete/Array

How to Add/Delete/Array in YAML File using yq

我在 yaml 中有这段代码

cpu-affinity:
    - management-cpu-set:
        cpu: [ 0 ]  # include only these CPUs in affinity settings

我现在用的是yq version4 我想通过用户输入将此 cpu 数组从 [0] 修改为给定列表,并在需要时将其重置回 [0]。

我可以通过一种方式进行迭代和添加,例如 cpu[0]=x 、 cpu[1]=y 等 但是要删除它,我必须对每个元素使用 运行 del 命令将其重置为 cpu :[0]

有没有什么方法可以直接用一条命令用用户输入替换整个数组并将其重置回 [0]

使用mikefarah/yq, you could use the env operator加载YAML列表并动态更新为

要使用 user-input 更新整个数组,请执行以下操作

user='[1, 2, 3]' reset='[0]' yq '.cpu-affinity[].management-cpu-set.cpu = env(user)' yaml

并将其重置

user='[1, 2, 3]' reset='[0]' yq '.cpu-affinity[].management-cpu-set.cpu = env(reset)' yaml

已在最新版本 4.23.1 上测试