jaq is a jq clone focused on correctness, speed, and simplicity.
It aims to support a large subset of jq’s syntax and operations.
This is free and open source software.
Features include:
- Basics:
- Identity (.)
- Recursion (..)
- Basic data types (null, boolean, number, string, array, object)
- if-then-else (if .a < .b then .a else .b end)
- Folding (reduce .[] as $x (0; . + $x), foreach .[] as $x (0; . + $x; . + .))
- Error handling (try … catch …)
- String interpolation (“The successor of \(.) is \(.+1).”)
- Format strings (@json, @text, @csv, @tsv, @html, @sh, @base64, @base64d)
- Paths:
- Indexing of arrays/objects (.[0], .a, .[“a”])
- Iterating over arrays/objects (.[])
- Optional indexing/iteration (.a?, .[]?)
- Array slices (.[3:7], .[0:-1])
- String slices
- Operators:
- Composition (|)
- Binding (. as $x | $x)
- Concatenation (,)
- Plain assignment (=)
- Update assignment (|=, +=, -=)
- Alternation (//)
- Logic (or, and)
- Equality and comparison (.a == .b, .a < .b)
- Arithmetic (+, -, *, /, %)
- Negation (-)
- Error suppression (?)
- Definitions:
- Basic definitions (def map(f): [.[] | f];)
- Recursive definitions (def r: r; r)
- Core filters:
- Empty (empty)
- Errors (error)
- Input (inputs)
- Length (length, utf8bytelength)
- Rounding (floor, round, ceil)
- String <-> JSON (fromjson, tojson)
- String <-> integers (explode, implode)
- String normalisation (ascii_downcase, ascii_upcase)
- String prefix/postfix (startswith, endswith, ltrimstr, rtrimstr)
- String splitting (split(“foo”))
- Array filters (reverse, sort, sort_by(-.), group_by, min_by, max_by)
- Stream consumers (first, last, range, fold)
- Stream generators (range, recurse)
- Time (now, fromdateiso8601, todateiso8601)
- More numeric filters (sqrt, sin, log, pow, …) (list of numeric filters)
- Standard filters:
- These filters are defined via more basic filters. Their definitions are at std.jq.
- Undefined (null)
- Booleans (true, false, not)
- Special numbers (nan, infinite, isnan, isinfinite, isfinite, isnormal)
- Type (type)
- Filtering (select(. >= 0))
- Selection (values, nulls, booleans, numbers, strings, arrays, objects, iterables, scalars)
- Conversion (tostring, tonumber)
- Iterable filters (map(.+1), map_values(.+1), add, join(“a”))
- Array filters (transpose, first, last, nth(10), flatten, min, max)
- Object-array conversion (to_entries, from_entries, with_entries)
- Universal/existential (all, any)
- Recursion (walk)
- I/O (input)
- Regular expressions (test, scan, match, capture, splits, sub, gsub)
- Time (fromdate, todate)
- Numeric filters – imports many filters from libm and follows their type signature.
Website: github.com/01mf02/jaq
Support:
Developer: Michael Färber
License: MIT License
jaq is written in Rust. Learn Rust with our recommended free books and free tutorials
Alternatives to jq | Return to JSON Tools
Popular series | |
---|---|
![]() | The largest compilation of the best free and open source software in the universe. Each article is supplied with a legendary ratings chart helping you to make informed decisions. |
![]() | Hundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information. |
![]() | Replace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS. |
![]() | Awesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series. |
![]() | Machine Learning explores practical applications of machine learning and deep learning from a Linux perspective. We've written reviews of more than 40 self-hosted apps. All are free and open source. |
![]() | New to Linux? Read our Linux for Starters series. We start right at the basics and teach you everything you need to know to get started with Linux. |
![]() | Alternatives to popular CLI tools showcases essential tools that are modern replacements for core Linux utilities. |
![]() | Essential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users. |
![]() | Linux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine. |
![]() | Surveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal. |
![]() | Saving Money with Linux looks at how you can reduce your energy bills running Linux. |
![]() | Home computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum. |
![]() | Now and Then examines how promising open source software fared over the years. It can be a bumpy ride. |
![]() | Linux at Home looks at a range of home activities where Linux can play its part, making the most of our time at home, keeping active and engaged. |
![]() | Linux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery. |
![]() | Getting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers. |
![]() | Best Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series. |
![]() | These best free books accelerate your learning of every programming language. Learn a new language today! |
![]() | These free tutorials offer the perfect tonic to our free programming books series. |
![]() | Linux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts. |
![]() | Stars and Stripes is an occasional series looking at the impact of Linux in the USA. |