Ответ 1
Просто выбросив другое решение в микс...
Попробуйте jq
, легкий и гибкий процессор JSON с командной строкой:
jq '. | length' /tmp/test.json
Печать длины массива объектов.
Я получаю такой ответ JSON
от команды curl
:
[
{
"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": ""
}
]
Как подсчитать количество элементов в массиве (здесь 2
), используя Bash
или в командной строке (например, underscore
)?
Просто выбросив другое решение в микс...
Попробуйте jq
, легкий и гибкий процессор JSON с командной строкой:
jq '. | length' /tmp/test.json
Печать длины массива объектов.
Самое короткое выражение:
curl 'http://…' | jq length
Возможно, вы можете продолжать подсчет с помощью awk
:
$ awk '/{/ {d++} /}/ {d--} /{/ && d==1 {count++} END{print count}' file
2
/{/ {d++}
, если найдено {
, добавьте переменную глубины./}/ {d--}
, если найдено }
, уменьшите значение переменной глубины./{/ && d==1 {count++}
, если глубина равна 1, и она найдет {
, затем добавьте совпадение в счетчике.END{print count}
распечатать результат.Простым решением является установка jshon
:
jshon -l < /tmp/test.json
2