You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用yq将含数组的YAML转换为指定格式CSV?

将多层嵌套数组的YAML转换为指定格式CSV的yq解决方案

需求说明

需要把包含多层数组结构的YAML文件,转换为每行包含组织名,项目名,Feed名的CSV格式。

示例YAML

ProductLine:
  ProductLineName: aa
  ADO_FeedsList:
    - organizationName: bb
      Project:
        - ProjectName: cc
          ProjectFeedsName: 
          - dd
          - ee
        - ProjectName: ff
          ProjectFeedsName:
          - gg
          - hh
  OtherInfo: N/A

期望CSV输出

bb,cc,dd
bb,cc,ee
bb,ff,gg
bb,ff,hh

之前尝试的问题

  • 命令1仅遍历到项目层级,未展开每个项目下的Feed列表,因此只输出了组织名和项目名的组合。
  • 命令2错误地同时遍历所有项目名和所有Feed,导致字符串与数组相加,触发类型不匹配错误。

正确的yq命令

通过变量存储上级层级字段,嵌套遍历下级数组,确保每个Feed都能和对应的组织名、项目名配对:

yq -o csv '.ProductLine.ADO_FeedsList[] | (
  .organizationName as $org |
  .Project[] | (
    .ProjectName as $proj |
    .ProjectFeedsName[] | [$org, $proj, .]
  )
)' test.yaml

命令解释

  1. .ProductLine.ADO_FeedsList[]:遍历每个组织条目
  2. .organizationName as $org:将当前组织名存入变量$org
  3. .Project[]:遍历当前组织下的每个项目
  4. .ProjectName as $proj:将当前项目名存入变量$proj
  5. .ProjectFeedsName[]:遍历当前项目下的每个Feed
  6. [$org, $proj, .]:将三个字段组合成数组,最终由yq转换为CSV行

运行结果

执行上述命令后,会输出完全符合期望的CSV内容。

内容的提问来源于stack exchange,提问作者Clair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:10:51