Задать вопрос
@Kaberungula

Как в jq bash вывести только первое значение ключа из одного словаря?

Подскажите, пожалуйста, как можно вывести только первое значение из двух одинаковых ключей в одном словаре?
"addresses": {
  "Network hidden ab4252cc-8e5f-5d76-86e7-618f3f18ac48": [
    {
      "version": 4,
      "addr": "123.12.1.123",
      "OS-EXT-IPS:type": "fixed",
      "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:9e:9f:01"
    }
  ],
  "Network 4df4332c-6a52-43b3-bdf3-653d6b6764a4": [
    {
      "version": 4,
      "addr": "123.123.12.123,
      "OS-EXT-IPS:type": "fixed",
      "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:f1:8c:e0"
    }
  ]
}

При таком запросе jq .[][].addresses[][0].addr , возвращает сразу два ip адреса.
"123.12.1.123"
"123.12.1.123"
  • Вопрос задан
  • 208 просмотров
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
для валидного JSON (а ваш пример невалидный, плюс кавычка во втором айпишнике не закрыта", можно было бы заюзать так

jq '[.[][][].addr]|.[1]'

spoiler
{ "addresses" : {
"Network hidden ab4252cc-8e5f-5d76-86e7-618f3f18ac48": [
{
"version": 4,
"addr": "123.12.1.123"
}
],
"Network 4df4332c-6a52-43b3-bdf3-653d6b6764a4": [
{
"version": 4,
"addr": "123.123.12.123"
}
]
}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы