如何使用 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 上测试
我在 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 上测试