Skip to content

Latest commit

 

History

History
107 lines (74 loc) · 3.25 KB

README.md

File metadata and controls

107 lines (74 loc) · 3.25 KB

jq

jq is a lightweight and flexible command-line JSON processor akin to sed,awk,grep, and friends for JSON data. It's written in portable C and has zero runtime dependencies, allowing you to easily slice, filter, map, and transform structured data.

THIS FORK is a simple hack to add:

  • a string function 'md5'
  • a function 'rand' returning float64

where the underlying functions are written in Zig.

I'm pretty much a n00b with Makefiles, let alone Zig. But the latter is truly awesome.

Modified files:

  • Makefile.am -- is there a better way to do this? Let me know via pull request thingy.
  • src/builtin.c -- add the extern C-ABI functions f_md5, f_rand and register jq keywords 'md5', 'rand'.
  • README.md -- this.

Added file:

  • src/f_misc.zig -- see this file for a few notes on how it was done (TL;DR: really easily. Did I mention Zig is awesome?)

Example using hack:

$ ./jq -n 'rand,rand'
0.9407224365467721
0.4601556075983295

$ ./jq -n '""|md5'
"d41d8cd98f00b204e9800998ecf8427e"

compare (Mac md5, same as Linux md5sum):

$ echo -n | md5
d41d8cd98f00b204e9800998ecf8427e

The rest of this README is unchanged from jqlang/jq. Thanks!

Documentation

Installation

Prebuilt Binaries

Download the latest releases from the GitHub release page.

Docker Image

Pull the jq image to start quickly with Docker.

Run with Docker

Example: Extracting the version from a package.json file
docker run --rm -i ghcr.io/jqlang/jq:latest < package.json '.version'
Example: Extracting the version from a package.json file with a mounted volume
docker run --rm -i -v "$PWD:$PWD" -w "$PWD" ghcr.io/jqlang/jq:latest '.version' package.json

Building from source

Dependencies

  • libtool
  • make
  • automake
  • autoconf

Instructions

git submodule update --init # if building from git to get oniguruma
autoreconf -i               # if building from git
./configure --with-oniguruma=builtin
make -j8
make check
sudo make install

Build a statically linked version:

make LDFLAGS=-all-static

If you're not using the latest git version but instead building a released tarball (available on the release page), skip the autoreconf step, and flex or bison won't be needed.

Cross-Compilation

For details on cross-compilation, check out the GitHub Actions file and the cross-compilation wiki page.

Community & Support

License

jq is released under the MIT License. jq's documentation is licensed under the Creative Commons CC BY 3.0. jq uses parts of the open source C library "decNumber", which is distributed under ICU License