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