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 p
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 p
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
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.
--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
--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
--curl-head
curl --head command parser
[details](https://kellyjonbrazil.github.io/jc/docs/parse
No open issues yet, or sync has not completed.