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: 2then
yq w sample.yaml b.c catwill output:
b:
c: catUpdating files in-place
yq w -i sample.yaml b.c catwill update the sample.yaml file so that the value of 'c' is cat.
From STDIN
cat sample.yaml | yq w - b.c blahAdding 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?