2

我正在使用 yq 将 YAML 转换为 JSON。文件转换后如下所示:

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

配置文件中对象的两个名称都会根据情况而变化,所以我无法按名称查找。我想获取 Profiles 对象 (chan) 中的第二个对象的名称。如何使用 Bash 和 yq 使这成为可能?

4

1 回答 1

1

这是从 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 的所有子项。

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

于 2019-12-04T14:06:59.663 回答