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

使用sed按"- "分隔YAML字符串失效,如何提取内容生成指定CSV

YAML转指定格式CSV解决方案

问题原因

你之前的sed命令正则匹配规则错误:你写的/^- $/匹配的是行内容仅为- 加换行的空列表行,但实际YAML中- 后面紧跟了字段内容,所以完全匹配不到任何行,无法得到结果。

可用方案

方案1:用yq(YAML专用处理工具,适配任意合法YAML格式)

yq是专门处理YAML的命令行工具,不受缩进、字段顺序变化影响,稳定性最高:

# 提取主角色名
main_role=$(yq e '.name' <<< "$string")
# 遍历角色引用列表生成CSV行
yq e '.roleReferences[] | "'"$main_role"'," + .name + "," + .roleTemplateName + "," + .roleTemplateAppId' <<< "$string"

输出结果:

MAIN_ROLE,Name1,template2,app1
MAIN_ROLE,Name2,template2,app2

注:你给出的示例输出中第一行的template1为笔误,原YAML第一条的roleTemplateName实际为template2

方案2:用awk(无额外工具依赖,适配当前固定格式YAML)

如果没有安装yq,可以用awk直接按行解析文本:

awk '
/^name: / {main_role = $2}
/^- roleTemplateAppId: / {app_id = $2}
/^[[:space:]]+roleTemplateName: / {tpl_name = $2}
/^[[:space:]]+name: / {print main_role "," $2 "," tpl_name "," app_id}
' <<< "$string"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:09:03