json
现在是最流行的数据交换格式了,但是在命令行中显示, 查找, 处理, 还是不如纯文本方便, 但是有了下面这些工具, 处理json
数据可以易如反掌了。。
以下只介绍OS X
平台, Linux
下相应工具也都有, 建议自己折腾就不介绍了, 至于windows
用户, 自己想办法。。。
brew
, OS X
的包管理工具, 没有的话请先安装, http://brew.sh/python
, 编程语言, 系统自带, http://python.orgruby
, 编程语言, 系统自带, https://www.ruby-lang.org/en/node
, 基于v8
的javascript
平台, brew install node
, http://nodejs.orggo
, 编程语言, Google出品, brew install go
, http://golang.orgR
, 编程语言, 擅长计算机统计和画图, http://www.r-project.org/pip
, python
的包管理工具, 安装easy_install pip
, https://pypi.python.org/pypi/pipgem
, ruby
的包管理工具, 自带了, http://rubygems.orgnpm
, node
的包管理工具, 安装完node
就有了, https://npmjs.orgcurl
, 下载工具, 系统自带, http://curl.haxx.sewget
, 另一个下载工具, brew install wget
, http://www.gnu.org/software/wget/yajl
, C
语言编写的json
库, 安装: brew install yajl
, http://lloyd.github.io/yajl/pygmentize
, ruby
语言的Pygments
绑定, Pygments
是用python
编写的代码高亮工具, http://pygments.org/jq
, C
编写的命令行json
处理工具, brew install jq
, http://stedolan.github.io/jq/json2csv
, go
编写的json
转csv
工具, go get github.com/jehiah/json2csv
, https://github.com/jehiah/json2csvcsvkit
, python
编写的csv
格式处理工具, sudo pip install csvkit
, https://github.com/onyxfish/csvkitxml2json
, javascript
编写的xml
转json
工具, npm install -g xml2json-command
, https://github.com/parmentf/xml2jsonhquery
, JavaScript
编写的从html中提取数据的工具, 基于jsdom
, 可以使用jQuery
和underscore
scrape
,python
写的从html中提取数据的工具, https://github.com/jeroenjanssens/data-science-toolboxjson
文件curl
, 比如curl https://registry.npmjs.org > registry.json
wget
, 比如wget https://registry.npmjs.org -o registry.json
json
文件过来json
文件cat registry.json
json
cat registry.json | json_verify
或者:
cat invalid.json | python -mjson.tool
json
cat registry.json | json_reformat
或者:
cat invalid.json | python -mjson.tool
cat registry.json | json_reformat | pygmentize -l javascript
或者:
cat registry.json | jq .
json
中查找数据以下以https://registry.npmjs.org/underscore
这个json
文件为素材, 可以使用
curl https://registry.npmjs.org/underscore > u.json
获取这个文件
jq '._id' u.json # 'underscore'
jq '._id, .description' u.json
# ->
# "underscore"
# "JavaScript's functional programming helper library."
jq '.versions["1.0.3"].keywords' u.json # ["util","functional","server","client","browser"]
jq '.versions["1.0.3"].keywords[1]' u.json # "functional"
jq '.versions["1.0.3"] | .name, .author.name' u.json
# ->
# "underscore"
# "Jeremy Ashkenas"
更多的例子请参考 man page
: man jq
json
为csv
cat registry.json | json2csv -k db_name,doc_count,update_seq
# registry,52964,870607
csv
格式的数据csvsort
csvlook
csvsql
curl -s 'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -b -e 'table.wikitable > tr:not(:first-child)'
curl -s 'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -be 'table.wikitable > tr:not(:first-child)' | xml2json | jq -c '.html.body.tr[] | {country: .td[1][], border: .td[2][], surface: .td[3][], ratio: .td[4][]}' | head
未完待续...