mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-03 10:55:36 +00:00
Add informational hints to operator documentation covering behaviors
that may differ from user expectations, particularly for those
familiar with jq:
- slice-array: clarify that slicing only works on arrays, not strings
- select: document behavior when piping select to a literal value
- equals: note bash history expansion with != operator
- create-collect-into-object: mention that shorthand {key} syntax
is not supported
- collect-into-array: explain difference between [.x | .[]] and [.x[]]
2.1 KiB
2.1 KiB
Equals / Not Equals
This is a boolean operator that will return true if the LHS is equal to the RHS and false otherwise.
.a == .b
It is most often used with the select operator to find particular nodes:
select(.a == .b)
The not equals != operator returns false if the LHS is equal to the RHS.
{% hint style="info" %}
Note that the != operator contains ! which can trigger bash history expansion in interactive shells:
# May fail with: bash: !": event not found
yq '.status != "healthy"' file.yaml
Workarounds:
# Use $'...' quoting
yq $'.status != "healthy"' file.yaml
# Or use | not instead of !=
yq '.status == "healthy" | not' file.yaml
{% endhint %}
Related Operators
- comparison (
>=,<etc) operators here - boolean operators (
and,or,anyetc) here - select operator here
Match string
Given a sample.yml file of:
- cat
- goat
- dog
then
yq '.[] | (. == "*at")' sample.yml
will output
true
true
false
Don't match string
Given a sample.yml file of:
- cat
- goat
- dog
then
yq '.[] | (. != "*at")' sample.yml
will output
false
false
true
Match number
Given a sample.yml file of:
- 3
- 4
- 5
then
yq '.[] | (. == 4)' sample.yml
will output
false
true
false
Don't match number
Given a sample.yml file of:
- 3
- 4
- 5
then
yq '.[] | (. != 4)' sample.yml
will output
true
false
true
Match nulls
Running
yq --null-input 'null == ~'
will output
true
Non existent key doesn't equal a value
Given a sample.yml file of:
a: frog
then
yq 'select(.b != "thing")' sample.yml
will output
a: frog
Two non existent keys are equal
Given a sample.yml file of:
a: frog
then
yq 'select(.b == .c)' sample.yml
will output
a: frog