Разделить большой JSON-файл с хэш-структурой на несколько небольших файлов
Я работаю с очень большим файлом JSON, который имеет хеш-подобную структуру:
{
"1893": {
"foo": {
"2600": {
...[snip]...
},
"3520": {
...[snip]...
}
}
"id": "foobar"
},
"123": {
"bar": {
"4989": {
...[snip]...
},
"0098": {
...[snip]...
}
}
"id": "foobaz"
},
...[snip]...
"5553": {
"baz: {
"2600": {
...[snip]...
},
"3520": {
...[snip]...
}
}
"id": "bazqux"
}
}
(Этот файл похож на файл отображения миграции Stripe)
Я хотел бы разделить этот файл на несколько меньших, которые, очевидно, являются допустимыми файлами JSON. Поскольку "root" - это хеш, мне все равно, как этот файл разбивается, если в полученных файлах примерно одинаковое количество элементов.
Я пытался посмотреть на JQ, но я не понимаю, как этого добиться. Буду признателен за любые рекомендации относительно работающего решения JQ или любые другие инструменты, которые могут помочь в этом.
1 ответ
Решение
Мне удалось что-то приготовить с помощью JQ:
после проверки количества предметов
$file
имеет:jq -c "length" < $file
строим индексы для нарезки (
$from
а также$to
), затем сохраните фрагмент в$output
:jq -c "to_entries[$from:$to] | from_entries" < $file > $output