Фрагмент JQ-игры: https://jqplay.org/s/D5-FZl8wOs
Я использую jq для выравнивания массива json, который будет использоваться для sql.
JSON:
{
"0123":[
{"i":0,"p":"file 1","l":100},
{"i":1,"p":"file 2","l":200}
],
"0234":[
{"i":0,"p":"file 1","l":100},
{"i":1,"p":"file 2","l":200}
]
}
JQ:
jq -r to_entries[] | {hash: .key, val: .value[]} | [.hash, .val.i, .val.p, .val.l]
Желаемый вывод:
[
"0123",
0,
"file 1",
100
]
[
"0123",
1,
"file 2",
200
]
[
"0234",
0,
"file 1",
100
]
[
"0234",
1,
"file 2",
200
]
Вышеописанное работало только тогда, когда файл был небольшим, но теперь я получаю ошибки памяти / ОС убивает его по мере его увеличения.
Если я передаю параметр --stream, я получаю ошибку:
jq: error (at <stdin>:9): Cannot index array with string "i"
Как я могу решить это?