yq
A lightweight and portable command-line YAML processor.
TLDR
Output a YAML file, in pretty-print format (v4+)
$ yq eval [path/to/file.yaml]
Output a YAML file, in pretty-print format (v3)
$ yq read [path/to/file.yaml] --colors
Output the first element in a YAML file that contains only an array (v4+)
$ yq eval '.[0]' [path/to/file.yaml]
Output the first element in a YAML file that contains only an array (v3)
$ yq read [path/to/file.yaml] '[0]'
Set (or overwrite) a key to a value in a file (v4+)
$ yq eval '.[key] = "[value]"' --inplace [path/to/file.yaml]
Set (or overwrite) a key to a value in a file (v3)
$ yq write --inplace [path/to/file.yaml] '[key]' '[value]'
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]
Merge two files and print to stdout (v3)
$ yq merge [path/to/file1.yaml] [path/to/file2.yaml] --colors