mirror of
https://github.com/mikefarah/yq.git
synced 2024-11-12 13:48:06 +00:00
1.3 KiB
1.3 KiB
With
Use the with
operator to conveniently make multiple updates to a deeply nested path, or to update array elements relatively to each other. The first argument expression sets the root context, and the second expression runs against that root context.
{% hint style="warning" %} Note that versions prior to 4.18 require the 'eval/e' command to be specified.
yq e <exp> <file>
{% endhint %}
Update and style
Given a sample.yml file of:
a:
deeply:
nested: value
then
yq 'with(.a.deeply.nested; . = "newValue" | . style="single")' sample.yml
will output
a:
deeply:
nested: 'newValue'
Update multiple deeply nested properties
Given a sample.yml file of:
a:
deeply:
nested: value
other: thing
then
yq 'with(.a.deeply; .nested = "newValue" | .other= "newThing")' sample.yml
will output
a:
deeply:
nested: newValue
other: newThing
Update array elements relatively
The second expression runs with each element of the array as it's contextual root. This allows you to make updates relative to the element.
Given a sample.yml file of:
myArray:
- a: apple
- a: banana
then
yq 'with(.myArray[]; .b = .a + " yum")' sample.yml
will output
myArray:
- a: apple
b: apple yum
- a: banana
b: banana yum