使用yq根据对象的位置获取对象内的对象名称

时间:2019-07-08 14:55:24

标签: json bash yq

我正在使用yq将YAML转换为JSON。转换文件后,它看起来像这样:

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

“个人档案”中对象的两个名称都会根据情况而改变,因此我无法按名称查找它。我想获取Profiles对象(chan)中第二个对象的名称。如何使用Bash和yq使其成为可能?

1 个答案:

答案 0 :(得分:1)

下面是从yaml文件中提取它的命令行:

mongodb

这是已转换文件的相同方法:

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

如果在以下文件上运行,两者都将产生“ SECOND-KEY”值:

zz.yaml:

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

zz.json:

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

第一个命令将提取配置文件的所有子项。

第二个命令提取子级的顶级键。