yq
yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor. It uses jq like syntax but works with yaml files as well as json, xml, properties, csv and tsv. It doesn't yet support everything jq does - but it does support the most common operations and functions, and more is being added continuously.
Snippets⚑
Find and update items in an array⚑
We have an array and we want to update the elements with a particular name.
Given a sample.yaml file of:
- name: Foo
numBuckets: 0
- name: Bar
numBuckets: 0
Then yq '(.[] | select(.name == "Foo") | .numBuckets) |= . + 1' sample.yaml will output:
- name: Foo
numBuckets: 1
- name: Bar
numBuckets: 0
Iterate over the elements of a query with a bash loop⚑
readarray dependencies < <(yq e -o=j -I=0 '.roles[]' requirements.yaml)
for dependency in "${dependencies[@]}"; do
source="$(echo "$dependency" | yq e '.src' -)"
done