Skip to content

Instantly share code, notes, and snippets.

@ipbastola
Last active December 3, 2024 11:48
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)

@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