У меня есть очень большой файл (20 ГБ + сжатый) с именем input.json
, содержащий поток объектов JSON следующим образом:
{
"timestamp": "12345",
"name": "Some name",
"type": "typea"
}
{
"timestamp": "12345",
"name": "Some name",
"type": "typea"
}
{
"timestamp": "12345",
"name": "Some name",
"type": "typeb"
}
Я хочу разбить этот файл на файлы в зависимости от их свойства type
: typea.json
, typeb.json
и т. Д., Каждый из которых содержит свой собственный поток json-объектов, имеющих только совпадающее свойство типа.
Мне удалось решить эту проблему для небольших файлов, однако с такими большимиНа моем экземпляре AWS не хватает памяти.Поскольку я хочу уменьшить использование памяти, я понимаю, что мне нужно использовать --stream
, но я изо всех сил пытаюсь понять, как мне этого добиться.
cat input.json | jq -c --stream 'select(.[0][0]=="type") | .[1]'
вернет мне значения каждого типасвойства, но как я могу использовать это, чтобы затем фильтровать объекты?
Любая помощь будет принята с благодарностью!