在我的 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