jq cheat sheet
The everyday jq filters at a glance, all against the team document. Press ▶ to run one.
The document the examples run on
{
"team": "Platform",
"office": { "city": "Berlin", "floor": 3 },
"members": [
{ "name": "Ada", "age": 36, "role": "lead", "active": true,
"email": "[email protected]", "skills": ["rust", "sql"] },
{ "name": "Linus", "age": 28, "role": "dev", "active": true,
"email": null, "skills": ["c", "shell"] },
{ "name": "Grace", "age": 45, "role": "dev", "active": false,
"skills": ["cobol"] },
{ "name": "Alan", "age": 41, "role": "qa", "active": true,
"email": "[email protected]", "skills": [] }
]
}| Query | What it does | Run it |
|---|---|---|
.team | a field | Try it |
.office.city | nested fields | Try it |
.members[0] | an array element (negative indexes count from the end) | Try it |
.members[1:3] | a slice (the end is exclusive) | Try it |
.members[] | every element, as a stream | Try it |
.members[] | .name | pipe: feed each output into the next filter | Try it |
[.members[].age] | collect a stream into an array | Try it |
.members[] | select(.age > 30) | keep only what matches | Try it |
.members | map(.age + 1) | transform every element | Try it |
.members[] | {name, age} | build a new object | Try it |
.members[] | .email // "n/a" | a default for null or missing values | Try it |
.members | length | count | Try it |
.members | map(.age) | add / length | average | Try it |
.members | sort_by(.age) | sort | Try it |
.members | group_by(.role) | group | Try it |
.members | map(.skills) | flatten | unique | flatten and de-duplicate | Try it |
.members[] | [.name, .age] | @csv | one CSV row per member (@tsv for tabs) | Try it |
.members | INDEX(.name) | a lookup table keyed by name | Try it |
.members[] | select(.role | IN("dev", "qa")) | keep when the value is one of several | Try it |
.office | keys | an object's keys | Try it |
.office | tostream | the value as [path, value] events | Try it |
[.. | numbers] | every number anywhere in the document | Try it |
"\(.team) HQ" | string interpolation | Try it |