我正在使用 yq 将 YAML 转换为 JSON。文件转换后如下所示:
{
"Profiles": {
"OneOrgOrdererGenesis": {...
},
"chan": {...
}
}
配置文件中对象的两个名称都会根据情况而变化,所以我无法按名称查找。我想获取 Profiles 对象 (chan) 中的第二个对象的名称。如何使用 Bash 和 yq 使这成为可能?
这是从 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
如果在以下文件上运行,两者都会产生“SECOND-KEY”值:
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"
]
}
}
第一个命令提取 Profile 的所有子项。
第二个命令提取子级的顶级键。