yq
a lightweight and portable command-line YAML processor. yq
uses jq like syntax but works with yaml files as well as json. It doesn't yet support everything jq
does - but it does support the most common operations and functions, and more is being added continuously.
yq is written in go - so you can download a dependency free binary for your platform and you are good to go! If you prefer there are a variety of package managers that can be used as well as docker, all listed below.
Quick Usage Guide
Read a value:
yq e '.a.b[0].c' file.yaml
Pipe from STDIN:
cat file.yaml | yq e '.a.b[0].c' -
Update a yaml file, inplace
yq e -i '.a.b[0].c = "cool"' file.yaml
Update using environment variables
NAME=mike yq e -i '.a.b[0].c = strenv(NAME)' file.yaml
Merge multiple files
yq ea '. as $item
…