Получить имя объекта в пределах объекта, основываясь на его позиции, используя yq

Я использую yq для преобразования YAML в JSON. Когда файл конвертируется, он выглядит так:

{
  "Profiles": {
    "OneOrgOrdererGenesis": {...
    },
    "chan": {...
  }
}

Оба имени объектов в профилях будут меняться в зависимости от ситуации, поэтому я не могу найти их по имени. Я хочу получить имя 2-го объекта, который находится внутри объекта Profiles (чан). Как я могу сделать это возможным, используя Bash и yq?

0 ответов

Вот командная строка для извлечения его из файла yaml:

yq r -j zz.yaml Profiles | jq -r 'keys[]'|head -2|tail -1

и вот тот же метод для уже преобразованного файла:

jq -r .Profiles zz.json | jq -r 'keys[]'|head -2|tail -1

Оба дают значение "ВТОРОЙ КЛЮЧ", если они работают со следующими файлами:

zz.yaml:

Profiles:
   TTT:
      - dfdfd
      - dsdwee
   SECOND-KEY:
      sd:
         - sddsd
   DEE:
      - ds d
      - er er

zz.json:

{
  "Profiles": {
    "DEE": [
      "ds d",
      "er er"
    ],
    "SECOND-KEY": {
      "sd": [
        "sddsd"
      ]
    },
    "TTT": [
      "dfdfd",
      "dsdwee"
    ]
  }
}

первая команда извлекает всех дочерних элементов профиля.

Вторая команда извлекает ключи верхнего уровня дочерних элементов.

Другие вопросы по тегам