내 yaml 파일에는 다음과 같은 사람 배열이 있습니다(항상 요소가 하나만 있음).
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