yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor
Go to file
mfarah 2780903b60 Fixed readme formatting 2015-10-06 11:51:36 +11:00
.gitignore Added release task 2015-09-29 09:41:00 +10:00
README.md Fixed readme formatting 2015-10-06 11:51:36 +11:00
data_navigator.go Can now splat maps 2015-10-06 10:08:31 +11:00
data_navigator_test.go Can now splat maps 2015-10-06 10:08:31 +11:00
path_parser.go Custom path parsing 2015-10-03 17:04:12 +10:00
path_parser_test.go Custom path parsing 2015-10-03 17:04:12 +10:00
precheckin.sh Precheckin now installs if tests pass 2015-09-29 11:05:20 +10:00
release.sh Added release task 2015-09-29 09:41:00 +10:00
sample.yaml Can handle arrays 2015-09-28 13:17:50 +10:00
sample2.yaml Can now splat maps 2015-10-06 10:08:31 +11:00
yaml.go Removed debug printLn 2015-10-05 16:02:07 +11:00
yaml_test.go Handles quoted values when writing 2015-10-03 17:25:13 +10:00

README.md

yaml

yaml is portable command line tool written in go

Allows you to read and update yaml files from bash (or whatever). All in a lovely dependency free binary!

Download latest release

or alternatively install using go get:

go get github.com/mikefarah/yaml

Read examples

yaml <yaml file> <path>

Basic

Given a sample.yaml file of:

b:
  c: 2

then

yaml sample.yaml b.c

will output the value of '2'.

Reading from STDIN

Given a sample.yaml file of:

cat sample.yaml | yaml - b.c

will output the value of '2'.

Splat

Given a sample.yaml file of:

---
bob:
  item1:
    cats: bananas
  item2:
    cats: apples

then

yaml sample.yaml bob.*.cats

will output

- bananas
- apples

Handling '.' in the yaml key

Given a sample.yaml file of:

b.x:
  c: 2

then

yaml sample.yaml \"b.x\".c

will output the value of '2'.

Arrays

You can give an index to access a specific element: e.g.: given a sample file of

b:
  e:
    - name: fred
      value: 3
    - name: sam
      value: 4

then

yaml sample.yaml b.e[1].name

will output 'sam'

Array Splat

e.g.: given a sample file of

b:
  e:
    - name: fred
      value: 3
    - name: sam
      value: 4

then

yaml sample.yaml b.e[*].name

will output:

- fred
- sam

Updating yaml

Given a sample.yaml file of:

b:
  c: 2

then

yaml w sample.yaml b.c cat

will output:

b:
  c: cat