Skip to content

Instantly share code, notes, and snippets.

@ipbastola
Last active September 3, 2024 14:40
Show Gist options
  • Save ipbastola/2c955d8bf2e96f9b1077b15f995bdae3 to your computer and use it in GitHub Desktop.
Save ipbastola/2c955d8bf2e96f9b1077b15f995bdae3 to your computer and use it in GitHub Desktop.
JQ to filter JSON by value

JQ to filter JSON by value

Syntax: cat <filename> | jq -c '.[] | select( .<key> | contains("<value>"))'

Example: To get json record having _id equal 611

cat my.json | jq -c '.[] | select( ._id | contains(611))'

Remember: if JSON value has no double quotes (eg. for numeric) to do not supply in filter i.e. in contains(611)

@fcgomes92
Copy link

Thanks a lot for this and for the answers ❤️

@ST-DDT
Copy link

ST-DDT commented Oct 7, 2021

Note: If you need the output to be an array, then you should use map:

cat my.json | jq -c 'map( select( ._id == 611 ) )'

@tripleee
Copy link

Tangentially, as ever, you want to avoid the useless cat.

Instead of

cat file | jq ...

you want

jq ... file

@samrjack
Copy link

samrjack commented Mar 3, 2023

@tripleee When using it in a script you are right, but when doing iterative testing on the command line, not having to to jump back through the file name every time is undeniably helpful.

@jcallen
Copy link

jcallen commented Jun 22, 2023

@samrjack Another way to do the same without changing the order on the command line is to replace:

cat file | jq ...

with:

< file jq ...

You can put the < file anywhere on the command line, not just at the end

@mikeschinkel
Copy link

@jcallen — Very cool!

And as they say, "I learn something new everyday!" 🙂

@gangsta
Copy link

gangsta commented Oct 15, 2023

If you're looking after - how to parse JSON and select date range
Look at here https://gist.github.com/gangsta/702e071fd048db2e39c7907f40d0cfd4

@mscomparin
Copy link

To get an array back and persist it to a file, I wrapped the whole expression in an array like this:

cat input.json | jq '[ .[] | select( .field | contains("something")) ]' > output.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment