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

请求编写Shell脚本(可使用grep/awk/sed等工具)将API请求记录文本转换为指定格式CSV文件

请求编写Shell脚本(可使用grep/awk/sed等工具)将API请求记录文本转换为指定格式CSV文件

嗨,我来帮你搞定这个CSV转换需求!用awk工具就能完美解决,它处理这种有固定规律的日志文本特别顺手,下面直接给你方案:

单行命令版

如果你不想写单独的脚本文件,直接用这条命令就行,假设你的原始日志文件叫api_records.txt:

awk '/^\+/ { desc = substr($0, 3); next } /^(POST|GET|PATCH|DELETE)/ { method = $1; split($NF, arr, /\[|,|ms\]/); status = arr[2]; gsub(/ OK| No Content/, "", status); time = arr[4]; printf "%s,%s,%s,%s\n", method, desc, status, time }' api_records.txt > output.csv

拆分解释版(方便理解)

如果想更清晰,可以把逻辑写成单独的convert.awk脚本文件:

# 处理描述行(以+开头的行)
/^\+/ { 
    # 去掉开头的"+ ",提取完整描述
    desc = substr($0, 3)
    # 跳过当前行,处理下一行
    next 
}

# 处理API请求行(以HTTP方法开头的行)
/^(POST|GET|PATCH|DELETE)/ {
    # 提取HTTP方法(POST/GET等)
    method = $1
    # 分割最后一个字段(比如[200 OK, 482B, 35ms]),拿到状态和耗时
    split($NF, arr, /\[|,|ms\]/)
    # 提取状态码,去掉后面的文本(比如"200 OK"变成"200")
    status = arr[2]
    gsub(/ OK| No Content/, "", status)
    # 提取耗时数字(比如"35ms"变成"35")
    time = arr[4]
    # 按CSV格式输出
    printf "%s,%s,%s,%s\n", method, desc, status, time
}

使用方法:

awk -f convert.awk api_records.txt > output.csv

额外优化(处理含逗号的描述)

如果你的API描述里可能包含逗号,为了符合CSV规范,可以把输出的字段用双引号包裹,修改printf行即可:

printf "\"%s\",\"%s\",\"%s\",\"%s\"\n", method, desc, status, time

执行完命令后,output.csv里就是你想要的格式啦!

备注:内容来源于stack exchange,提问作者guptpallav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 09:24:53