Mike Farah의 yq를 사용하여 배열의 값 변경

Mike Farah의 yq를 사용하여 배열의 값 변경

내 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

관련 정보