Skip to content

Instantly share code, notes, and snippets.

@talwrii
Last active December 16, 2020 15:13
Show Gist options
  • Save talwrii/4fe822e3f43280e9ddc166322a3b96c7 to your computer and use it in GitHub Desktop.
Save talwrii/4fe822e3f43280e9ddc166322a3b96c7 to your computer and use it in GitHub Desktop.
jq cheatsheet

jq cheatsheet

Extract field from list of objects

jq 'map(.foo)'

[ { foo: 1 }, { foo: 2 } ]
[1, 2]

Extract as stream of values instead of a list

jq '.[] | .foo'

[ { foo: 1 }, { foo: 2 } ]
1, 2

Slicing

jq '.[1:2]'

[ { foo: 1 }, { foo: 2 } ]
{ foo: 2 }

Dictionary subset shorthand

jq 'map({ a, b })'

[ { a: 1, b: 2, c: 3 }, ...]
[ { a: 1, b: 2 }, ...]

jq 'with_entries(.value |= fromjson)' --sort-keys

Parsing json

{ b: "{}", a: "{}" }
{ a: {}, b: {} }

Serializing json

jq 'with_entries(.value |= tojson)' --sort-keys

{ a: {}, b: {} }
{ a: "{}", b: "{}" }

Flattening json

jq 'flatten(1)'

[[1], [2]]
[1, 2]

Converting to csv

jq '.[] | [.foo, .bar] | @csv' -r

[{ "foo": 1, "bar": 2, "baz":3 }]
1,2

Sort

jq 'sort'

[3, 2, 1]
[1, 2, 3]

Deleting duplicates (dedup / uniq)

jq unique

[1, 1, 2, 1]
[1, 2]

Sort lines of a file

jq --slurp '. | sort | .[]'

Converting arbitrary data to json

jq -r '(map(keys) | add | unique | sort) as $cols | .[] as $row | $cols | map($row[.]) | @csv'

[ { "foo": 1, "bar": 2}, { "foo": 3, "baz": 4}]
2,,1
,4,3

Convert an array to a stream of json records one per line

jq -rc '.[]'

Suitable for stream. See record stream



Adapted from SO (http://bit.ly/2fOwzRR)

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