I want to use jq to check if a keyword exists as a key in a JSON at any level. Here is what I came up with:
jq -c 'paths | select(.[-1]) as $p| index("headline") //empty' news.json
The output is an array:
[
6,
7,
9
]
I want to map the output array to jq function any()
and get an overall result as true if key exists or false if it doesn't.
How can I get that done with jq ?
CodePudding user response:
Provide any
with an iterator and a condition
jq 'any(paths; .[-1] == "headline")'
You can also provide the -e
(or --exit-status
) option to have an exit status of 0
if the result was true
, and 1
if the result was false
, which can immediately be used for further processing in the shell.
jq -e 'any(paths; .[-1] == "headline")'
CodePudding user response:
You don't need an intermediate array for that.
any(paths[-1]; . == "headline")