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