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

如何将脚本Terminal输出转换为规范表格格式的CSV文件?

终端输出转结构化CSV表格的实现方法

原始终端输出

File searched is xyz
fie found at line number 09
"key": "name", "value": "Ramesh" 
"Key": "contact num", "value": "1234"

期望输出的CSV表格

File nameLine numbernamecontact num
xyz09Ramesh1234

处理脚本(用awk实现)

可以直接在终端用awk命令处理输出,或者把脚本保存成convert.awk文件运行:

BEGIN {
    # 初始化固定表头变量
    filename = ""
    linenum = ""
    # 先打印固定表头部分
    printf "| File name | Line number |"
}

# 匹配文件名行
/File searched is/ {
    filename = $NF
}

# 匹配行号行,兼容输入里的笔误"fie"和正确拼写"file"
/[Ff]ile found at line number/ {
    linenum = $NF
}

# 匹配key-value格式的行
/"key":/ || /"Key":/ {
    # 去除引号,分割提取key和value
    gsub(/"/, "", $0)
    split($0, parts, /[:, ]+/)
    key = parts[2]
    value = parts[4]
    # 记录key和对应值,首次遇到时追加表头
    if (!key_exists[key]) {
        keys[++key_count] = key
        key_exists[key] = 1
        printf " %s |", key
    }
    values[key] = value
}

END {
    # 打印表头分隔线
    printf "\n|-----------|-------------|"
    for (i=1; i<=key_count; i++) {
        printf "%" length(keys[i]) "s|", "--------"
    }
    # 打印值行
    printf "\n| %s | %s |", filename, linenum
    for (i=1; i<=key_count; i++) {
        printf " %s |", values[keys[i]]
    }
    printf "\n"
}

使用方法

如果你的脚本输出已经存到output.txt文件,运行:

awk -f convert.awk output.txt

如果要实时处理脚本的输出,直接通过管道传递:

your_script.sh | awk -f convert.awk

脚本说明

  • 兼容输入文本里的拼写错误(比如fie和file)
  • 自动识别动态的key字段,将其追加为表头并对应填充值
  • 最终输出标准的Markdown表格格式,也可以根据需求调整为纯CSV格式(去掉分隔线和竖线即可)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:20:24