Мне удалось получить ожидаемый результат из вашего образца JSON, используя следующее:
group_by(.org, .rc."$event")[] | [.[0].rc."$event", .[0].org, length] | @tsv
Вы можете попробовать это на jqplay.org .
Модификация предложения group_by
гарантирует, что у нас будет одна запись на пару .org
/ .rc.$event
(без нее у нас будет только одна запись на .org
, которая может скрыть некоторую .rc.$event
).
Затем мы добавляем .rc.$event
к массиву, который вы создаете, так же, как вы сделали с .org
, получая доступ к значению первого элемента массива, так как мы знаем, что они все равно одинаковы.
Чтобы отсортировать результат, вы можете поместить его в массив и использовать sort_by(.[0])
, который будет сортировать по первому элементу строк:
[group_by(.org, .rc."$event")[] | [.[0].rc."$event", .[0].org, length]] | sort_by(.[0])[] | @tsv