yq/operators/equals.md
Chris Hamant 3c0fd6a3e9
docs: add hints for common syntax edge cases
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[]]
2026-01-28 02:51:22 -05:00

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 %}

  • comparison (>=, < etc) operators here
  • boolean operators (and, or, any etc) 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