如何使用命令行计算JSON对象中的项目?
我从curl命令中获得了这种JSON回复:
[ { "cid": 49, "pyn": "yi4", "hans": "亿", "hant": "億", "tid": 68, "l10n": "cent million", "pid": 1, "pos": "num", "pos_txt": "" }, { "cid": 50, "pyn": "yi4", "hans": "亿", "hant": "億", "tid": 69, "l10n": "100 millions", "pid": 1, "pos": "num", "pos_txt": "" } ]
如何使用Bash或命令行(例如underscore )来计算数组中项目的数目(这里是2 )?
只是在混合中投入另一个解决scheme…
试试jq ,一个轻量级和灵活的命令行JSON处理器:
jq '. | length' /tmp/test.json
打印对象数组的长度。
最短的expression是
curl 'http://…' | jq length
也许你可以用awk继续计数:
$ awk '/{/ {d++} /}/ {d--} /{/ && d==1 {count++} END{print count}' file 2
-
/{/ {d++}如果{find了,则增加深度variables。 -
/}/ {d--}如果}被find,递减深度variables。 -
/{/ && d==1 {count++}如果深度是1,它find一个{,然后在计数器中添加一个匹配。 -
END{print count}打印结果。
一个简单的解决scheme是安装jshon库:
jshon -l < /tmp/test.json 2