私のyamlファイルには次の人の配列があります(常に要素が1つしかありません)。
persons:
- name: mario
version: 1.0.0
city: Madrid
yqを使用して都市を別の値に変更するにはどうすればよいですか?
答え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