mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
1.7 KiB
1.7 KiB
Like the jq
equivalents, variables are sometimes required for the more complex expressions (or swapping values between fields).
Note that there is also an additional ref
operator that holds a reference (instead of a copy) of the path, allowing you to make multiple changes to the same path.
Single value variable
Given a sample.yml file of:
a: cat
then
yq eval '.a as $foo | $foo' sample.yml
will output
cat
Multi value variable
Given a sample.yml file of:
- cat
- dog
then
yq eval '.[] as $foo | $foo' sample.yml
will output
cat
dog
Using variables as a lookup
Example taken from jq
Given a sample.yml file of:
"posts":
- "title": Frist psot
"author": anon
- "title": A well-written article
"author": person1
"realnames":
"anon": Anonymous Coward
"person1": Person McPherson
then
yq eval '.realnames as $names | .posts[] | {"title":.title, "author": $names[.author]}' sample.yml
will output
title: Frist psot
author: Anonymous Coward
title: A well-written article
author: Person McPherson
Using variables to swap values
Given a sample.yml file of:
a: a_value
b: b_value
then
yq eval '.a as $x | .b as $y | .b = $x | .a = $y' sample.yml
will output
a: b_value
b: a_value
Use ref to reference a path repeatedly
Note: You may find the with
operator more useful.
Given a sample.yml file of:
a:
b: thing
c: something
then
yq eval '.a.b ref $x | $x = "new" | $x style="double"' sample.yml
will output
a:
b: "new"
c: something