Объединить имя и номер поля из структуры JSON в jq - PullRequest
0 голосов
/ 30 марта 2020
{
   "name": "ford",
   "availableVersions": [
      {
         "version": 111,
         "count": 3
      },
      {
         "version": 122,
         "count": 2
      }
                         ]
}
{
   "name": "bmw",
   "availableVersions": [
     {
         "version": 133,
         "count": 1
     },
     {
      "version": 144,
      "count": 3
     }
                        ]
}

У меня есть эта демонстрация. json файл сейчас if (count == 3) Я хочу объединить имя с версией.

Таким образом, мой вывод должен быть [ford-111, BMW-144]. Я использую json синтаксический анализ с jq.

Я попробовал эту команду

cat demo2| jq '  select(.availableVersions[].count == 3) | .name + ": " + (.availableVersions[].version|tostring)'

Вывод:

"ford: 111"
"ford: 122"
"bmw: 133"
"bmw: 144"

Ожидаемый вывод:

"ford: 111"
"bmw: 144"

Кто-нибудь может мне помочь с этим?

1 Ответ

1 голос
/ 30 марта 2020

У вас это почти получилось, вам просто нужно переместить селектор на другую сторону.

.name + ": " + (.availableVersions[]|select(.count == 3).version|tostring)

Хотя я бы написал это с использованием строковой интерполяции:

"\(.name): \(.availableVersions[]|select(.count == 3).version)"
...