Получить имя объекта в пределах объекта, основываясь на его позиции, используя 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"
]
}
}
первая команда извлекает всех дочерних элементов профиля.
Вторая команда извлекает ключи верхнего уровня дочерних элементов.