Я создал файл json из общедоступного API с запросом скручивания:
curl "https://gbfs.citibikenyc.com/gbfs/es/station_status.json" > citibike.json
Эта симпатичная печать в jq
выглядит так:
$ jq . citibike.json
{
"last_updated": 1537986541,
"ttl": 10,
"data": {
"stations": [
{
"station_id": "304",
"num_bikes_available": 22,
"num_ebikes_available": 0,
"num_bikes_disabled": 4,
"num_docks_available": 7,
"num_docks_disabled": 0,
"is_installed": 1,
"is_renting": 1,
"is_returning": 0,
"last_reported": 1537986269,
"eightd_has_available_keys": true,
"eightd_active_station_services": [
{
"id": "a58d9e34-2f28-40eb-b4a6-c8c01375657a"
}
]
},
{
"station_id": "359",
"num_bikes_available": 0,
"num_ebikes_available": 0,
"num_bikes_disabled": 2,
"num_docks_available": 50,
"num_docks_disabled": 1,
"is_installed": 1,
"is_renting": 1,
"is_returning": 0,
"last_reported": 1537986120,
"eightd_has_available_keys": false,
"eightd_active_station_services": [
{
"id": "2e104e31-606a-44af-8b25-ceaffc338489"
}
]
},...
Моя цель - получитьдва числа - сумма всех значений, содержащихся в num_bikes_available
и num_ebikes_available
с одним JQ-запросом.
Следующие попытки приводят к ошибке:
jq -n 'reduce (inputs | .data.stations[] ) as $i ({}; .[$i.num_bikes_available] += $i.value)' citibike.json
jq 'reduce .data.stations[] as $num_bikes_available (0; . + $num_bikes_available)' citibike.json
Есть идеи, почему и как получить желаемый результат?