What is jq command in linux
Last updated: April 1, 2026
Key Facts
- jq is a lightweight, open-source command-line tool for parsing and querying JSON data on Linux, macOS, Windows, and Unix systems
- It uses a pipe-based syntax similar to Unix tools like sed and awk, allowing chaining of operations to transform JSON data
- jq can extract specific fields from JSON objects, filter arrays based on conditions, and perform complex transformations with builtin functions
- It supports advanced operations including map, reduce, group_by, sort_by, unique, and recursive descent with the .. operator
- jq is typically installed via package managers and used in shell scripts and command pipelines for JSON data processing and API response handling
What is jq?
jq is a command-line JSON query language and processor designed for parsing, filtering, and transforming JSON data directly from the terminal. It enables system administrators, developers, and data analysts to work with JSON files and API responses efficiently without switching to programming languages or editors. The tool works seamlessly with Unix pipelines, allowing combination with other command-line tools.
Basic Usage and Syntax
The basic syntax is jq 'filter' input.json where the filter describes what data to extract. Simple filters include . (entire object), .fieldname (specific field), .[0] (array element), and .[] (all array elements). For example, jq '.name' users.json extracts the name field from each object in the JSON file.
Filtering and Selection
jq supports conditional filtering to extract specific data. The syntax jq '.[] | select(.age > 30)' filters array elements where age exceeds 30. Pipe operators allow chaining filters: jq '.users | map(.name)' extracts names from a users array. Complex filters can be combined to perform sophisticated data extraction tasks.
Transformation and Restructuring
jq can transform JSON structures entirely. The map() function applies operations to each array element, group_by() groups objects by field values, and sort_by() sorts arrays by specific criteria. Custom objects can be constructed with syntax like jq '{id: .user_id, name: .full_name}', restructuring JSON into different formats.
Working with APIs
jq is particularly useful for processing API responses. Combined with curl, you can fetch and process JSON data: curl https://api.example.com/users | jq '.results | map(.email)'. This extracts email addresses from an API response in a single pipeline, eliminating the need for separate scripts or tools.
Advanced Features
jq supports recursive descent with .. to find all occurrences of a field at any depth, conditional logic with if-then-else, reduce operations for accumulating values, and recursive functions. The @base64 and @uri formatters encode data, while @csv and @json convert formats. String interpolation with \(expression) enables dynamic text generation from JSON data.
Related Questions
How do you install jq on Linux?
jq is available in most Linux package managers. On Ubuntu/Debian, use 'sudo apt-get install jq'. On CentOS/RHEL, use 'sudo yum install jq'. On macOS, use 'brew install jq'. After installation, verify with 'jq --version' to confirm successful installation.
What are common jq filters and operations?
Essential filters include '.' (whole object), '.field' (field extraction), '.[]' (array iteration), 'keys' (object keys), 'length' (count items), 'select()' (conditional filtering), 'map()' (transform arrays), 'sort_by()' (sorting), and 'group_by()' (grouping). These can be combined with pipes for complex operations.
How does jq compare to other JSON processing tools?
jq is more powerful and flexible than tools like grep or sed for JSON processing. Unlike Python one-liners, jq doesn't require a full programming language. It's comparable to dedicated tools like fx or gojq but jq is the most widely adopted standard with the largest community and documentation available.
More What Is in Daily Life
Also in Daily Life
More "What Is" Questions
Trending on WhatAnswers
Browse by Topic
Browse by Question Type
Sources
- jq Official DocumentationMIT
- Wikipedia - jqCC-BY-SA-3.0
- GNU sed Manual for Unix piping contextGFDL-1.3