Usando jq com testes booleanos
Dado que seu JSON é armazenado em uma variável chamada json , você poderia fazer o seguinte no prompt do shell:
$ echo "$json" | jq '.client.state | test("tiling")'
false
Isso retorna corretamente false porque o seu corpus contém o valor floating
.
Testes negativos
Como alternativa, se você quiser testar se o valor não é tiling
, você pode usar o filtro | not
para negar a lógica do seu teste. Por exemplo:
$ echo "$json" | jq '.client.state | test("tiling") | not'
true
Isso retorna true porque o estado do cliente não é tiling
, é floating
.
Extraindo o valor
Caso deseje garantir que seus filtros estejam funcionando de maneira sã, você também pode usar jq para analisar o valor dessa chave aninhada. Por exemplo:
$ echo "$json" | jq .client.state
"floating"
Você pode então usar essa informação para validar seus testes e filtros, ou simplesmente passá-la ao longo de um pipeline de shell para fgrep
ou fgrep -v
se você não se importa em gerar um processo adicional.