Я создаю общий JQ-скрипт group-by (подробности в другом вопросе ), который принимает поле для группировки в качестве аргумента командной строки.
Работает нормальнокогда я группирую по полю верхнего уровня;это не так, когда мне нужно сгруппировать по полю глубоко в иерархии объектов:
jq_group_on_test.json:
{
"a": {
"b": {
"c": "EFG"
}
},
"d": "HIJ"
}
Поле верхнего уровня:
jq -s --arg group_by_field "d" '
group_by(.[$group_by_field])
| .[]
| [ (.[0][$group_by_field] ) ]' \
jq_group_on_test.json
[
"HIJ"
]
Поле из вложенного объекта:
jq -s --arg group_by_field "a.b.c" '
group_by(.[$group_by_field])
| .[]
| [ (.[0][$group_by_field] ) ]' \
jq_group_on_test.json
[
null
]
Тот же фильтр работает, если переменные не используются:
jq -s '
group_by(.a.b.c)
| .[]
| [ (.[0].a.b.c ) ]' \
jq_group_on_test.json
[
"DEF"
]