Write/Update
yaml w <yaml_file|json_file> <path> <new value>
This command can take a json file as input too, and will output yaml unless specified to export as json (-j)
To Stdout¶
Given a sample.yaml file of:
b:
c: 2
then
yaml w sample.yaml b.c cat
will output:
b:
c: cat
From STDIN¶
cat sample.yaml | yaml w - b.c blah
Adding new fields¶
Any missing fields in the path will be created on the fly.
Given a sample.yaml file of:
b:
c: 2
then
yaml w sample.yaml b.d[0] "new thing"
will output:
b:
c: cat
d:
- new thing
Updating files in-place¶
Given a sample.yaml file of:
b:
c: 2
then
yaml w -i sample.yaml b.c cat
will update the sample.yaml file so that the value of 'c' is cat.
Updating multiple values with a script¶
Given a sample.yaml file of:
b:
c: 2
e:
- name: Billy Bob
and a script update_instructions.yaml of:
b.c: 3
b.e[0].name: Howdy Partner
then
yaml w -s update_instructions.yaml sample.yaml
will output:
b:
c: 3
e:
- name: Howdy Partner
And, of course, you can pipe the instructions in using '-':
cat update_instructions.yaml | yaml w -s - sample.yaml
Values starting with a hyphen (or dash)¶
This needs a bit of trickery so that it won't try to parse the value as a CLI option. Specifically you will need to wrap the value with a single and double quotes:
yaml w my.path '"-Dvalue"'
will output
my:
path: -Dvalue