使用 Mike Farah 的 yq 更改数组中的值

使用 Mike Farah 的 yq 更改数组中的值

在我的 yaml 文件中,我有这个 person 数组(它始终只有一个元素)

persons:
  - name:  mario
    version: 1.0.0
    city: Madrid

如何使用 yq 将 city 替换为任何其他值?

答案1

用这个:

yq -i '.persons[0].city = "Barcelona"' yourfile.yaml

yourfile.yaml酌情替换“巴塞罗那” 。这将替换city数组第一个元素内部的值persons(如果没有,则创建它)。

答案2

或者,如果您不知道确切的索引,但知道name对象的索引,您可以尝试以下操作:

yq -i '.persons[] |= select(.name == "mario").city = "Barcelona"' yourfile.yaml

工作于yq version 4.25.2

根据评论(Kusalananda)进行更新,对于 4.3x 和 4.4x 版本,您需要使用以下内容:

yq4407 -i '.persons |= map(select(.name == "mario").city = "Barcelona")' city.yaml

相关内容