Write

Updates all the matching nodes of path expression in a yaml file to the supplied value.

yq w <yaml_file> <path_expression> <new value>

See docs for path expression and value parsing for more details, including controlling quotes and tags.

Basic

Given a sample.yaml file of:

b:
  c: 2

then

yq w sample.yaml b.c cat

will output:

b:
  c: cat

Updating files in-place

yq w -i sample.yaml b.c cat

will update the sample.yaml file so that the value of 'c' is cat.

From STDIN

cat sample.yaml | yq 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:

then

will output:

Appending value to an array field

Given a sample.yaml file of:

then

will output:

Note that the path is in quotes to avoid the square brackets being interpreted by your shell.

Multiple Documents

Update a single document

Given a sample.yaml file of:

then

will output:

Update all documents

Given a sample.yaml file of:

then

will output:

Writing Anchors

The ---anchorName flag can be used to set the anchor name of a node

Given a sample document of:

Then:

Will yield

Writing Aliases

The --makeAlias flag can create (or update) a node to be an alias to an anchor.

Given a sample file of:

Then

Will yield:

Updating only styles/tags without affecting values

You can use the write command to update the quoting style of nodes, or their tags, without re-specifying the values. This is done by omitting the value argument:

Given a sample document:

Then

Will yield:

Using a script file to update

Given a sample.yaml file of:

and a script update_instructions.yaml of:

then

will output:

And, of course, you can pipe the instructions in using '-':

Last updated

Was this helpful?