2021-09-15 05:18:10 +00:00
|
|
|
Use the `with` operator to conveniently make multiple updates to a deeply nested path, or to update array elements relatively to each other.
|
2021-09-12 11:52:02 +00:00
|
|
|
|
|
|
|
## Update and style
|
|
|
|
Given a sample.yml file of:
|
|
|
|
```yaml
|
|
|
|
a:
|
|
|
|
deeply:
|
|
|
|
nested: value
|
|
|
|
```
|
|
|
|
then
|
|
|
|
```bash
|
2021-09-15 12:24:03 +00:00
|
|
|
yq eval 'with(.a.deeply.nested; . = "newValue" | . style="single")' sample.yml
|
2021-09-12 11:52:02 +00:00
|
|
|
```
|
|
|
|
will output
|
|
|
|
```yaml
|
|
|
|
a:
|
|
|
|
deeply:
|
|
|
|
nested: 'newValue'
|
|
|
|
```
|
|
|
|
|
2021-09-15 05:18:10 +00:00
|
|
|
## Update multiple deeply nested properties
|
|
|
|
Given a sample.yml file of:
|
|
|
|
```yaml
|
|
|
|
a:
|
|
|
|
deeply:
|
|
|
|
nested: value
|
|
|
|
other: thing
|
|
|
|
```
|
|
|
|
then
|
|
|
|
```bash
|
2021-09-15 12:24:03 +00:00
|
|
|
yq eval 'with(.a.deeply; .nested = "newValue" | .other= "newThing")' sample.yml
|
2021-09-15 05:18:10 +00:00
|
|
|
```
|
|
|
|
will output
|
|
|
|
```yaml
|
|
|
|
a:
|
|
|
|
deeply:
|
|
|
|
nested: newValue
|
|
|
|
other: newThing
|
|
|
|
```
|
|
|
|
|
|
|
|
## Update array elements relatively
|
|
|
|
Given a sample.yml file of:
|
|
|
|
```yaml
|
|
|
|
myArray:
|
|
|
|
- a: apple
|
|
|
|
- a: banana
|
|
|
|
```
|
|
|
|
then
|
|
|
|
```bash
|
2021-09-15 12:24:03 +00:00
|
|
|
yq eval 'with(.myArray[]; .b = .a + " yum")' sample.yml
|
2021-09-15 05:18:10 +00:00
|
|
|
```
|
|
|
|
will output
|
|
|
|
```yaml
|
|
|
|
myArray:
|
|
|
|
- a: apple
|
|
|
|
b: apple yum
|
|
|
|
- a: banana
|
|
|
|
b: banana yum
|
|
|
|
```
|
|
|
|
|