У меня есть файл журнала событий, созданный сторонним инструментом, который я не могу изменить. Итак, этот файл журнала представляет собой огромный массив JSON, в котором элементы odds содержат метаданные, а пары содержат сообщение тела, связанное с метаданными. Я хочу иметь возможность разбивать файл в зависимости от метаданных, агрегируя информацию по темам в разных файлах.
Я работаю над этим проектом в Windows и пытаюсь использовать его с помощью командного файла и JQ.
В основном массив выглядит так:
[
{ "type": "abc123"},
{"name":"first component of type abc123"},
{ "type": "abc123"},
{"name":"second component of type abc123"},
{ "type": "def124"},
{"name":"first component of type def124"},
{ "type": "xyz999"},
{"name":"first component of type xyz999"},
{ "type": "abc123"},
{"name":"third component of type abc123"},
{ "type": "def124"},
{"name":"second component of type def124"},
{ "type": "abc123"},
{"name":"fifth component of type abc123"},
{ "type": "abc123"},
{"name":"sixth component of type abc123"},
{ "type": "def124"},
{"name":"third component of type def124"},
{ "type": "def124"},
{"name":"fourth component of type def124"},
{ "type": "abc123"},
{"name":"seventh component of type abc123"},
{ "type": "xyz999"},
{"name":"second component of type xyz999"}
...
]
Я знаючто у меня есть только 3 типа, поэтому я пытаюсь заархивировать файл для каждого из них. что-то вроде:
Первый файл
{
"componentLog": {
"type": "abc123",
"information": [
"first component of type abc123",
"second component of type abc123",
"third component of type abc123",
...
]
}
}
Второй файл
{
"componentLog": {
"type": "def124",
"information": [
"first component of type def124",
"second component of type def124",
"third component of type def124",
...
]
}
}
Третий файл
{
"componentLog": {
"type": "xyz999",
"information": [
"first component of type xyz999",
"second component of type xyz999",
"third component of type xyz999",
...
]
}
}
Я знаю, что могу разделять метаданныес этим
jq.exe ".[] | select(.type==\"product\")" file.json
И затем я пытаюсь математически вычислить индекс index
.But, просто возвращает индекс первого элемента, который содержит оператор выбора ... Так что я не знаю, как это решить...