Boolean Operators
The
or
and and
operators take two parameters and return a boolean result.not
flips a boolean from true to false, or vice versa.any
will return true
if there are any true
values in a array sequence, and all
will return true if all elements in an array are true.any_c(condition)
and all_c(condition)
are like any
and all
but they take a condition expression that is used against each element to determine if it's true
. Note: in jq
you can simply pass a condition to any
or all
and it simply works - yq
isn't that clever..yetThese are most commonly used with the
select
operator to filter particular nodes.Running
yq --null-input 'true or false'
will output
true
Running
yq --null-input 'true and false'
will output
false
Given a sample.yml file of:
- a: bird
b: dog
- a: frog
b: bird
- a: cat
b: fly
then
yq '[.[] | select(.a == "cat" or .b == "dog")]' sample.yml
will output
- a: bird
b: dog
- a: cat
b: fly
Given a sample.yml file of:
- false
- true
then
yq 'any' sample.yml
will output
true
Given a sample.yml file of:
[]
then
yq 'any' sample.yml
will output
false
Given a sample.yml file of:
a:
- rad
- awesome
b:
- meh
- whatever
then
yq '.[] |= any_c(. == "awesome")' sample.yml
will output
a: true
b: false
Given a sample.yml file of:
- true
- true
then
yq 'all' sample.yml
will output
true
Given a sample.yml file of:
[]
then
yq 'all' sample.yml
will output
true
Given a sample.yml file of:
a:
- rad
- awesome
b:
- meh
- 12
then
yq '.[] |= all_c(tag == "!!str")' sample.yml
will output
a: true
b: false
Running
yq --null-input 'true | not'
will output
false
Running
yq --null-input 'false | not'
will output
true
Running
yq --null-input '"cat" | not'
will output
false
Running
yq --null-input '"" | not'
will output
false
Running
yq --null-input '1 | not'
will output
false
Running
yq --null-input '0 | not'
will output
false
Running
yq --null-input '~ | not'
will output
true
Last modified 4mo ago