kellyjonbrazil /
jello
CLI tool to filter JSON and JSON Lines data with Python syntax. (Similar to jq)
Loading repository data…
kellyjonbrazil / repository
CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.
Check out the
jcPython package documentation for developers
jcis available as an Ansible filter plugin in thecommunity.generalcollection. See this blog post for an example.
JSON Convert
jc JSONifies the output of many CLI tools, file-types, and common strings
for easier parsing in scripts. See the Parsers section for
supported commands, file-types, and strings.
dig example.com | jc --dig
[{"id":38052,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],
"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,
"opt_pseudosection":{"edns":{"version":0,"flags":[],"udp":4096}},"question":
{"name":"example.com.","class":"IN","type":"A"},"answer":[{"name":
"example.com.","class":"IN","type":"A","ttl":39049,"data":"93.184.216.34"}],
"query_time":49,"server":"2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when":"Fri Apr 16 16:09:00 PDT 2021","rcvd":56,"when_epoch":1618614540,
"when_epoch_utc":null}]
This allows further command-line processing of output with tools like jq
or jello by piping commands:
$ dig example.com | jc --dig | jq -r '.[].answer[].data'
93.184.216.34
or using the alternative "magic" syntax:
$ jc dig example.com | jq -r '.[].answer[].data'
93.184.216.34
jc can also be used as a python library. In this case the returned value
will be a python dictionary, a list of dictionaries, or even a
lazy iterable of dictionaries
instead of JSON:
>>> import subprocess
>>> import jc
>>>
>>> cmd_output = subprocess.check_output(['dig', 'example.com'], text=True)
>>> data = jc.parse('dig', cmd_output)
>>>
>>> data[0]['answer']
[{'name': 'example.com.', 'class': 'IN', 'type': 'A', 'ttl': 29658, 'data':
'93.184.216.34'}]
For
jcPython package documentation, usehelp('jc'),help('jc.lib'), or see the online documentation.
Two representations of the data are available. The default representation uses a
strict schema per parser and converts known numbers to int/float JSON values.
Certain known values of None are converted to JSON null, known boolean
values are converted, and, in some cases, additional semantic context fields are
added.
To access the raw, pre-processed JSON, use the -r cli option or the raw=True
function parameter in parse() when using jc as a python library.
Schemas for each parser can be found at the documentation link beside each Parser below.
Release notes can be found in the Releases section on Github.
For more information on the motivations for this project, please see my blog post on Bringing the Unix Philosophy to the 21st Century and my interview with Console.
See also:
Use Cases:
There are several ways to get jc. You can install via pip, OS package
repositories, or by downloading the
correct binary for your
architecture and running it anywhere on your filesystem.
pip3 install jc
| OS | Command |
|---|---|
| Debian/Ubuntu linux | apt-get install jc |
| Fedora linux | dnf install jc |
| openSUSE linux | zypper install jc |
| Arch linux | pacman -S jc |
| NixOS linux | nix-env -iA nixpkgs.jc or nix-env -iA nixos.jc |
| Guix System linux | guix install jc |
| Gentoo Linux | emerge dev-python/jc |
| Photon linux | tdnf install jc |
| macOS | brew install jc |
| FreeBSD | portsnap fetch update && cd /usr/ports/textproc/py-jc && make install clean |
| Ansible filter plugin | ansible-galaxy collection install community.general |
| FortiSOAR connector | Install from FortiSOAR Connector Marketplace |
For more OS Packages, see https://repology.org/project/jc/versions.
For precompiled binaries, see Releases on Github.
jc accepts piped input from STDIN and outputs a JSON representation of the
previous command's output to STDOUT.
COMMAND | jc [SLICE] [OPTIONS] PARSER
cat FILE | jc [SLICE] [OPTIONS] PARSER
echo STRING | jc [SLICE] [OPTIONS] PARSER
Alternatively, the "magic" syntax can be used by prepending jc to the command
to be converted or in front of the absolute path for Proc files. Options can be
passed to jc immediately before the command or Proc file path is given.
(Note: command aliases and shell builtins are not supported)
jc [SLICE] [OPTIONS] COMMAND
jc [SLICE] [OPTIONS] /proc/<path-to-procfile>
The JSON output can be compact (default) or pretty formatted with the -p
option.
| Argument | Command or Filetype | Documentation |
|---|---|---|
--acpi | acpi command parser | details |
--airport | airport -I command parser | details |
--airport-s | airport -s command parser | details |
--amixer | amixer command parser | details |
--apt-cache-show | apt-cache show command parser | details |
--apt-get-sqq | apt-get -sqq command parser | details |
--arp | arp command parser | details |
--asciitable | ASCII and Unicode table parser | details |
--asciitable-m | multi-line ASCII and Unicode table parser | details |
--blkid | blkid command parser | details |
--bluetoothctl | bluetoothctl command parser | details |
Selected from shared topics, language and repository description—not editorial ratings.
kellyjonbrazil /
CLI tool to filter JSON and JSON Lines data with Python syntax. (Similar to jq)
BillGatesCat /
yf is a CLI tool that allows for quick and easy access to Yahoo! Finance market data.
maundergit /
command line tools to handle CSV(Comma Separated Value) file by python and bash script
--cbt | cbt (Google Bigtable) command parser | details |
--cef | CEF string parser | details |
--cef-s | CEF string streaming parser | details |
--certbot | certbot command parser | details |
--chage | chage --list command parser | details |
--cksum | cksum and sum command parser | details |
--clf | Common and Combined Log Format file parser | details |
--clf-s | Common and Combined Log Format file streaming parser | details |
--crontab | crontab command and file parser | details |
--crontab-u | crontab file parser with user support | details |
--csv | CSV file parser | details |
--csv-ih | CSV implicit header file parser | details |
--csv-s | CSV file streaming parser | details |
--csv-ih-s | CSV implicit header file streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parse |
blundergoat /
A collection of reusable Bash scripts for AI CLI tool management, AWS infrastructure, dev workflows, and language stack setup (PHP, Python, Go).
JoshLinneburg /
Shared collection of CLI utilities — bash scripts, git subcommands, python tools, whatever's useful. Works on Linux, macOS, and Windows.
Kiproy04 /
A personal CLI toolkit for faster Git, Python venvs, and script management