Чтобы избежать беспорядка, можно определить вспомогательную функцию:
def format:
(keys_unsorted | max_by(length) | length) as $mx
| keys_unsorted[] as $k
| (($mx - ($k|length)) * " ") + $k + " : " + "\(.[$k])";
Затем основную программу можно записать следующим образом:
map( select(.locations[].country.city.name == "Bangkok") )
| sort_by(.load)[]
| {"Server": .name,
"Hostname": .hostname,
"IP": .station,
"Country": .locations[0].country.name,
"City": .locations[0].country.city.name,
"Load": .load
}
| format, ""'
Вывод
При данном вводе первые два сегмента:
Server : Thailand #8
Hostname : th8.nordvpn.com
IP : 122.155.174.70
Country : Thailand
City : Bangkok
Load : 10
Server : Thailand #6
Hostname : th6.nordvpn.com
IP : 122.155.174.66
Country : Thailand
City : Bangkok
Load : 12