yq

a lightweight and portable command-line YAML, JSON, INI and XML processor. yq uses jqarrow-up-right like syntax but works with yaml files as well as json, xml, ini, 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.

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 and Podman, all listed below.

Quick Usage Guide

Read a value:

yq '.a.b[0].c' file.yaml

Pipe from STDIN:

yq '.a.b[0].c' < file.yaml

Update a yaml file, in place

yq -i '.a.b[0].c = "cool"' file.yaml

Update using environment variables

NAME=mike yq -i '.a.b[0].c = strenv(NAME)' file.yaml

Merge multiple files

# merge two files
yq -n 'load("file1.yaml") * load("file2.yaml")'

# merge using globs:
# note the use of `ea` to evaluate all the files at once
# instead of in sequence
yq ea '. as $item ireduce ({}; . * $item )' path/to/*.yml

Multiple updates to a yaml file

Find and update an item in an array:

Convert JSON to YAML

See recipesarrow-up-right for more examples and the documentationarrow-up-right for more information.

Take a look at the discussions for common questionsarrow-up-right, and cool ideasarrow-up-right

Install

See the github pagearrow-up-right for the various ways you can install and use yq

Known Issues / Missing Features

  • yq attempts to preserve comment positions and whitespace as much as possible, but it does not handle all scenarios (see https://github.com/go-yaml/yaml/tree/v3 for details)

  • Powershell has its own...opinions on quoting yqarrow-up-right

See tips and tricksarrow-up-right for more common problems and solutions.

Last updated

Was this helpful?