GRON:一款让使JSON可以Grep的工具

2018 年 1 月 11 日 黑白之道


今天给大家介绍一款名叫gron的JSON数据检索工具,gron不仅可以将目标JSON数据进行离散化拆分,并能够让用户更加轻松地使用grep来对数据进行搜索,而且它还能够允许用户查看到数据的绝对路径。

工具下载

下载地址:【GitHub传送门】

使用样例

gron的使用样例如下:


▶gron "https://api.github.com/repos/tomnomnom/gron/commits?per_page=1"| fgrep "commit.author"json[0].commit.author= {};
json[0].commit.author.date= "2016-07-02T10:51:21Z";
json[0].commit.author.email= "mail@tomnomnom.com";
json[0].commit.author.name= "Tom Hudson";


gron还可以逆向工作,即它能够将你所提供的数据转换成JSON格式:


▶gron "https://api.github.com/repos/tomnomnom/gron/commits?per_page=1"| fgrep "commit.author" | gron --ungron [ { "commit": { "author": { "date":"2016-07-02T10:51:21Z", "email":"mail@tomnomnom.com", "name": "TomHudson" } } } ]


工具安装

gron的使用不需要任何的运行时依赖,你可以直接从gron的Github库【传送门】中下载针对不同操作系统的代码版本,目前该工具支持Linux、Mac、Windows或FreeBSD等平台。你可以直接将项目代码拷贝到自己的执行路径(例如$PATH或/usr/bin)中,以方便使用:


▶tar xzf gron-linux-amd64-0.1.5.tgz
▶sudo mv gron /usr/bin/


如果你使用的是macOS,你还可以通过brew来安装gron:


▶brew install gron

或者说,如果你使用Go,你还可以使用go get命令来完成gron的安装(Go v1.7或更高版本):


▶ go get -u github.com/tomnomnom/gron

工具使用

从文件中读取JSON数据:


▶gron testdata/two.json json= {};
json.contact= {};
json.contact.email= "mail@tomnomnom.com";
json.contact.twitter= "@TomNomNom";
json.github= "https://github.com/tomnomnom/";
json.likes= [];
json.likes[0]= "code";
json.likes[1]= "cheese";
json.likes[2]= "meat";
json.name= "Tom";


从URL资源获取JSON数据:


▶gron http://headers.jsontest.com/json= {};
json.Host= "headers.jsontest.com";
json["User-Agent"]= "gron/0.1";
json["X-Cloud-Trace-Context"]= "6917a823919477919dbc1523584ba25d/11970839830843610056";


从stdin获取JSON数据:


▶curl -s http://headers.jsontest.com/ | gronjson= {};
json.Accept= "*/*";
json.Host= "headers.jsontest.com";
json["User-Agent"]= "curl/7.43.0";
json["X-Cloud-Trace-Context"]= "c70f7bf26661c67d0b9f2cde6f295319/13941186890243645147";


使用grep命令搜索目标数据并查看路径:


▶gron testdata/two.json | grep twitter
json.contact.twitter= "@TomNomNom";


gron还可以结合diff命令一起使用:


▶diff <(gron two.json) <(gron two-b.json)3c3
<json.contact.email = "mail@tomnomnom.com";
---
>json.contact.email = "contact@tomnomnom.com";


gron的输出为有效的JavaScript:


▶gron testdata/two.json > tmp.js
▶echo "console.log(json);" >> tmp.js
▶nodejs tmp.js
{contact: { email: 'mail@tomnomnom.com', twitter: '@TomNomNom' },github: 'https://github.com/tomnomnom/',likes: [ 'code', 'cheese', 'meat' ],name: 'Tom' }


Ungronning

gron还可以将它的输出数据转换为JSON格式:


▶gron testdata/two.json | gron -u{"contact": {"email":"mail@tomnomnom.com","twitter": "@TomNomNom"},"github":"https://github.com/tomnomnom/","likes": ["code","cheese","meat"],"name": "Tom"}


这也就意味着,你可以使用gron配合grep以及其他的工具来修改JSON数据:


▶gron testdata/two.json | grep likes | gron --ungron
{"likes": ["code","cheese","meat"]
}


在保存数组键值时,如果值为空的话,gron将会以“null“填充数组:


▶gron testdata/two.json | grep likes | grep -v cheese
json.likes= [];
json.likes[0]= "code";
json.likes[2]= "meat";
▶gron testdata/two.json | grep likes | grep -v cheese | gron --ungron
{"likes": ["code",
null,"meat"]
}


关于gron的高级使用技巧,请参考【这篇文档】。

获取帮助信息


▶gron --helpTransformJSON (from a file, URL, or stdin) into discrete assignments to make itgreppable
Usage:
gron [OPTIONS] [FILE|URL|-]
Options:
-u, --ungron     Reverse the operation (turn assignmentsback into JSON)-c, --colorize   Colorize output (default on tty)-m, --monochrome Monochrome (don't colorizeoutput)-s, --stream     Treat each line of input as a separateJSON object-k, --insecure   Disable certificate validation--no-sort    Don't sort output (faster)--version    Print version informationExitCodes:
0  OK
1  Failedto open file
2  Failedto read input
3  Failedto form statements
4  Failedto fetch URL
5  Failedto parse statements
6  Failedto encode JSON
Examples:
gron /tmp/apiresponse.json
gron http://jsonplaceholder.typicode.com/users/1
curl -shttp://jsonplaceholder.typicode.com/users/1 | gron
gronhttp://jsonplaceholder.typicode.com/users/1 | grep company | gron –ungron


文章出处:FreeBuf

你会喜欢


linux 批量执行工具

挖掘利器Andro Tickler:安卓应用渗透测试和审核工具箱

ASLRay:一个可以绕过ASLR的工具


登录查看更多
0

相关内容

JSON( Java Script Object Notation)是一种轻量级的资料交换语言,以文字为基础,且易于让人阅读。尽管 JSON 是在 JavaScript 的一個子集,但 JSON 是独立于语言的文本格式,並且采用了类似于 C 语言家族的一些习惯。
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【机器学习课程】Google机器学习速成课程
专知会员服务
162+阅读 · 2019年12月2日
ExBert — 可视化分析Transformer学到的表示
专知会员服务
30+阅读 · 2019年10月16日
TensorFlow 2.0 学习资源汇总
专知会员服务
66+阅读 · 2019年10月9日
机器学习相关资源(框架、库、软件)大列表
专知会员服务
38+阅读 · 2019年10月9日
TheFatRat 一款简易后门工具
黑白之道
35+阅读 · 2019年10月23日
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
ISeeYou一款强大的社工工具
黑白之道
29+阅读 · 2019年5月17日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
使用 Bert 预训练模型文本分类(内附源码)
数据库开发
102+阅读 · 2019年3月12日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
已删除
生物探索
3+阅读 · 2018年2月10日
Arxiv
21+阅读 · 2019年3月25日
Self-Driving Cars: A Survey
Arxiv
41+阅读 · 2019年1月14日
Rapid Customization for Event Extraction
Arxiv
7+阅读 · 2018年9月20日
Auto-Context R-CNN
Arxiv
4+阅读 · 2018年7月8日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【机器学习课程】Google机器学习速成课程
专知会员服务
162+阅读 · 2019年12月2日
ExBert — 可视化分析Transformer学到的表示
专知会员服务
30+阅读 · 2019年10月16日
TensorFlow 2.0 学习资源汇总
专知会员服务
66+阅读 · 2019年10月9日
机器学习相关资源(框架、库、软件)大列表
专知会员服务
38+阅读 · 2019年10月9日
相关资讯
TheFatRat 一款简易后门工具
黑白之道
35+阅读 · 2019年10月23日
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
ISeeYou一款强大的社工工具
黑白之道
29+阅读 · 2019年5月17日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
使用 Bert 预训练模型文本分类(内附源码)
数据库开发
102+阅读 · 2019年3月12日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
已删除
生物探索
3+阅读 · 2018年2月10日
相关论文
Top
微信扫码咨询专知VIP会员