У меня есть файл, содержащий следующую структуру и неизвестное количество результатов:
{
"results": [
[
{
"field": "AccountID",
"value": "5177497"
},
{
"field": "Requests",
"value": "50900"
}
],
[
{
"field": "AccountID",
"value": "pro"
},
{
"field": "Requests",
"value": "251"
}
]
],
"statistics": {
"Matched": 51498,
"Scanned": 8673577,
"ScannedByte": 2.72400814E10
},
"status": "HOLD"
}
{
"results": [
[
{
"field": "AccountID",
"value": "5577497"
},
{
"field": "Requests",
"value": "51900"
}
],
"statistics": {
"Matched": 51498,
"Scanned": 8673577,
"ScannedByte": 2.72400814E10
},
"status": "HOLD"
}
Существует несколько таких результатов, которые индексируются как массив с папкой результатов. Они не разделяются запятой.
Я пытаюсь просто напечатать "AccountID", отсортированный по "Запросы" в ZSH, используя jq. Я попытался сгладить их и использовать:
jq -r '.results [] [0] | .value' имя файла
jq -r '.results [] [1] | .value 'filename
Чтобы получить идентификатор учетной записи и запросы отдельно и сортировать их. Я не думаю, что bash имеет словарь, который можно использовать. Проблема заключается в файле, так как поле и значение не являются парой ключ-значение, но являются обеими парами. Поэтому извлечение их с использованием двух вышеупомянутых строк в отдельные массивы и сортировка по второму массиву кажется слишком длинным. Мне было интересно, если есть способ объединить обе операции. Другой способ - объединить все в строку и отсортировать в порядке возрастания. Python, вероятно, будет лучшим решением, но код должен быть zsh или bash.
Решения, которые используют sed, jq или любые другие ZSH поддерживаемые компиляторы, приветствуются. Если есть способ создать словарь в bash, пожалуйста, дайте мне знать.
Требуемым выходным требованием является только идентификатор учетной записи против номера запроса.
5577497 has 51900 requests
5177497 has 50900 requests
pro has 251 requests