yq/mkdocs/write.md

158 lines
2.0 KiB
Markdown
Raw Normal View History

2017-04-13 05:36:59 +00:00
```
2020-01-13 05:58:11 +00:00
yq w <yaml_file> <path_expression> <new value>
2017-04-13 05:36:59 +00:00
```
2020-01-13 05:58:11 +00:00
Updates all the matching nodes of path expression to the supplied value.
See docs for [path expression](path_expressions.md) for more details.
## Basic
2017-04-13 05:36:59 +00:00
Given a sample.yaml file of:
```yaml
b:
c: 2
```
then
```bash
2017-12-17 22:11:08 +00:00
yq w sample.yaml b.c cat
2017-04-13 05:36:59 +00:00
```
will output:
```yaml
b:
c: cat
```
2020-01-13 05:58:11 +00:00
### Updating files in-place
```bash
yq w -i sample.yaml b.c cat
```
will update the sample.yaml file so that the value of 'c' is cat.
## From STDIN
2017-04-13 05:36:59 +00:00
```bash
2017-12-17 22:11:08 +00:00
cat sample.yaml | yq w - b.c blah
2017-04-13 05:36:59 +00:00
```
2020-01-13 05:58:11 +00:00
## Adding new fields
2017-04-13 05:36:59 +00:00
Any missing fields in the path will be created on the fly.
Given a sample.yaml file of:
```yaml
b:
c: 2
```
then
```bash
2019-05-16 04:57:34 +00:00
yq w sample.yaml b.d[+] "new thing"
2017-04-13 05:36:59 +00:00
```
will output:
```yaml
b:
c: cat
d:
- new thing
```
2020-01-13 05:58:11 +00:00
## Appending value to an array field
Given a sample.yaml file of:
```yaml
b:
c: 2
d:
- new thing
- foo thing
```
then
```bash
yq w sample.yaml "b.d[+]" "bar thing"
```
will output:
```yaml
b:
c: cat
d:
- new thing
- foo thing
- bar thing
```
Note that the path is in quotes to avoid the square brackets being interpreted by your shell.
2020-01-13 05:58:11 +00:00
## Multiple Documents
### Update a single document
2018-06-20 03:42:00 +00:00
Given a sample.yaml file of:
```yaml
something: else
---
b:
c: 2
```
then
```bash
yq w -d1 sample.yaml b.c 5
```
will output:
```yaml
something: else
---
b:
c: 5
```
2020-01-13 05:58:11 +00:00
### Update all documents
2018-06-20 03:42:00 +00:00
Given a sample.yaml file of:
```yaml
something: else
---
b:
c: 2
```
then
```bash
yq w -d'*' sample.yaml b.c 5
```
will output:
```yaml
something: else
b:
c: 5
---
b:
c: 5
```
2020-01-13 05:58:11 +00:00
UPDATE THIS
UPDATE THIS
INCLUDE DELETE EXAMPLE
2017-04-13 05:36:59 +00:00
2020-01-13 05:58:11 +00:00
## Updating multiple values with a script
2017-04-13 05:36:59 +00:00
Given a sample.yaml file of:
```yaml
b:
c: 2
e:
- name: Billy Bob
```
and a script update_instructions.yaml of:
```yaml
b.c: 3
2019-05-16 04:57:34 +00:00
b.e[+].name: Howdy Partner
2017-04-13 05:36:59 +00:00
```
then
```bash
2017-12-17 22:11:08 +00:00
yq w -s update_instructions.yaml sample.yaml
2017-04-13 05:36:59 +00:00
```
will output:
```yaml
b:
c: 3
e:
- name: Howdy Partner
```
And, of course, you can pipe the instructions in using '-':
```bash
2017-12-17 22:11:08 +00:00
cat update_instructions.yaml | yq w -s - sample.yaml
```