- 论坛徽章:
- 15
|
本帖最后由 rdcwayx 于 2014-03-13 07:50 编辑
JSON.sh (a pipeable JSON parser written in Bash)
https://github.com/dominictarr/JSON.sh
这个工具写的要简单些,思路和上面的工具稍有不同。但是我个人觉得反而更适合shell板块的人使用,因为你可以有自己的发挥。- $ ./JSON.sh -l < file
- ["firstName"] "John"
- ["lastName"] "Smith"
- ["age"] 25
- ["address","streetAddress"] "21 2nd Street"
- ["address","city"] "New York"
- ["address","state"] "NY"
- ["address","postalCode"] 10021
- ["phoneNumbers",0,"type"] "home"
- ["phoneNumbers",0,"number"] "212 555-1234"
- ["phoneNumbers",1,"type"] "fax"
- ["phoneNumbers",1,"number"] "646 555-4567"
复制代码 通过这样的转换, 你就可以方便的用grep 来查询了,而这个grep命令是shell板块的强项。- $ ./JSON.sh -l < file |grep firstName
- ["firstName"] "John"
- $ ./JSON.sh -l < file |grep type
- ["phoneNumbers",0,"type"] "home"
- ["phoneNumbers",1,"type"] "fax"
复制代码 这个不带参数的,有更多的输出,看你自己的需求。- $ ./JSON.sh < file
- ["firstName"] "John"
- ["lastName"] "Smith"
- ["age"] 25
- ["address","streetAddress"] "21 2nd Street"
- ["address","city"] "New York"
- ["address","state"] "NY"
- ["address","postalCode"] 10021
- ["address"] {"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":10021}
- ["phoneNumbers",0,"type"] "home"
- ["phoneNumbers",0,"number"] "212 555-1234"
- ["phoneNumbers",0] {"type":"home","number":"212 555-1234"}
- ["phoneNumbers",1,"type"] "fax"
- ["phoneNumbers",1,"number"] "646 555-4567"
- ["phoneNumbers",1] {"type":"fax","number":"646 555-4567"}
- ["phoneNumbers"] [{"type":"home","number":"212 555-1234"},{"type":"fax","number":"646 555-4567"}]
- [] {"firstName":"John","lastName":"Smith","age":25,"address":{"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":10021},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"fax","number":"646 555-4567"}]}
- $ ./JSON.sh < file |grep "type.*number"
- ["phoneNumbers",0] {"type":"home","number":"212 555-1234"}
- ["phoneNumbers",1] {"type":"fax","number":"646 555-4567"}
- ["phoneNumbers"] [{"type":"home","number":"212 555-1234"},{"type":"fax","number":"646 555-4567"}]
- [] {"firstName":"John","lastName":"Smith","age":25,"address":{"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":10021},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"fax","number":"646 555-4567"}]}
复制代码 一共四个参数,自己要用到的时候,查一下即可上手。- $ ./JSON.sh -h
- Usage: JSON.sh [-b] [-l] [-p] [-h]
- -p - Prune empty. Exclude fields with empty values.
- -l - Leaf only. Only show leaf nodes, which stops data duplication.
- -b - Brief. Combines 'Leaf only' and 'Prune empty' options.
- -h - This help text.
复制代码 另外还推荐了一个jsonv.sh的小工具,主要是用来将JSON转换成CSV文件的,有兴趣的话,就自己看看吧。
jsonv.sh - A Bash command line tool for converting JSON to CSV
https://github.com/archan937/jsonv.sh
|
|