A lightweight and portable command-line YAML processor.

# To output a YAML file, in pretty-print format (v4+):
yq eval <path/to/file.yaml>

# To output a YAML file, in pretty-print format (v3):
yq read <path/to/file.yaml> --colors

# To output the first element in a YAML file that contains only an array (v4+):
yq eval '.[0]' <path/to/file.yaml>

# To output the first element in a YAML file that contains only an array (v3):
yq read <path/to/file.yaml> '[0]'

# To set (or overwrite) a key to a value in a file (v4+):
yq eval '.<key> = "<value>"' --inplace <path/to/file.yaml>

# To set (or overwrite) a key to a value in a file (v3):
yq write --inplace <path/to/file.yaml> '<key>' '<value>'

# To merge two files and print to 'stdout' (v4+):
yq eval-all 'select(filename == "<path/to/file1.yaml>") * select(filename == "<path/to/file2.yaml>")' <path/to/file1.yaml> <path/to/file2.yaml>

# To merge two files and print to 'stdout' (v3):
yq merge <path/to/file1.yaml> <path/to/file2.yaml> --colors