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

如何使用AWK命令将角色详情文本转换为指定格式的CSV文件?

角色详情转CSV格式问题解决

需求说明

输入的角色详情文本如下:

roledetails="name: CLD:HYB_Y_BASIS_ADMIN
    description: Basis Admin
    readOnly: <null>
    roleReferences:
      - description: desc1
        name: AuthGroup_Administrator
        roleTemplateAppId: it!b2455
        roleTemplateName: AuthGroup_Administrator
      - description: Desc2
        name: AuthGroup_BusinessExpert
        roleTemplateAppId: it!b2455
        roleTemplateName: AuthGroup_BusinessExpert
"

需要转换成指定格式的CSV,要求将描述字段中的逗号替换为冒号避免格式冲突,期望输出:

Collection Role, Desc,Role_Name,App_Id, Role_Template
CLD:HYB_Y_BASIS_ADMIN, desc1, AuthGroup_Administrator,it!b2455,AuthGroup_Administrator
CLD:HYB_Y_BASIS_ADMIN, desc2, AuthGroup_BusinessExpert,it!b2455,AuthGroup_BusinessExpert

原代码问题分析

你写的awk脚本存在几个关键问题:

  1. getline顺序错误:遇到-开头的行是description,但你直接先读取roleTemplateAppId,导致后续所有字段取值错位
  2. 未处理描述字段的逗号替换:没有实现需求中“逗号转冒号”的逻辑
  3. 缺少表头输出:没有生成CSV的表头行
  4. 字段顺序不符合要求:输出的字段顺序和期望的不一致
  5. awk追加文件的写法兼容性差:部分awk版本不支持>>这种直接在printf里追加的写法

修正后的解决方案

下面是可以正常工作的脚本,完全满足需求:

declare fullfilepath=$(pwd)/test1.csv

# 先写入CSV表头
echo "Collection Role, Desc,Role_Name,App_Id, Role_Template" > "$fullfilepath"

# 处理角色详情并追加到CSV
awk -F':[[:space:]]+' '
    # 捕获主角色名称
    /^[[:space:]]*name:/ {
        main_role = $2
    }
    # 处理每个子角色项
    /^[[:space:]]*- description:/ {
        # 将描述中的逗号替换为冒号
        gsub(/,/, ":", $2)
        curr_desc = $2
        
        # 依次读取后续的name、roleTemplateAppId、roleTemplateName行
        getline
        curr_role_name = $2
        getline
        curr_app_id = $2
        getline
        curr_role_template = $2
        
        # 按要求格式输出一行
        print main_role ", " curr_desc ", " curr_role_name ", " curr_app_id ", " curr_role_template
    }
' <<< "$roledetails" >> "$fullfilepath"

脚本说明

  1. 先通过echo写入CSV表头,确保格式正确
  2. 使用awk匹配主角色的name行,保存主角色名称
  3. 匹配每个子角色的description行时,先用gsub替换逗号为冒号
  4. 依次用getline读取后续的三个字段行,确保取值正确
  5. 最后按需求的字段顺序拼接输出,并追加到CSV文件中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:55:35