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

如何使用BASH将TXT文件数据按不同列存入CSV文件

修改后的完整BASH脚本
#!/bin/bash
inputFiles=("./Successes/SuccessSummary.txt" "./Failures/FailSummary.txt")
# 初始化四个数组存储对应类别的数值
declare -a scan_arr check_arr move_arr switch_arr
# 标记当前读取的类别
current_section=""

# 遍历所有输入文件
for file in "${inputFiles[@]}"
do 
    while IFS= read -r line
    do
        # 跳过空行
        [[ -z "$line" ]] && continue
        # 判断当前行是否为类别行,更新类别标记
        if [ "$line" = "Scan Times:" ]
        then 
            current_section="scan"
            continue
        fi
        if [ "$line" = "Check Times:" ]
        then 
            current_section="check"
            continue
        fi
        if [ "$line" = "Move Times:" ]
        then 
            current_section="move"
            continue
        fi
        # 注意:你原TXT里对应类别是Switch Times,原脚本里写的Switch Distances,这里做了修正
        if [ "$line" = "Switch Times:" ]
        then 
            current_section="switch"
            continue
        fi
        # 提取当前行的数值(去掉seconds和前后空格)
        val=$(echo "$line" | awk '{print $1}')
        # 根据当前类别把数值存入对应数组
        case $current_section in
            "scan") scan_arr+=("$val") ;;
            "check") check_arr+=("$val") ;;
            "move") move_arr+=("$val") ;;
            "switch") switch_arr+=("$val") ;;
        esac
    done < "$file"
done

# 写入CSV表头
echo "Scan Times,Check Times,Move Times,Switch Times" > results.csv
# 取最长数组的长度作为遍历上限,避免数据缺失
max_len=${#scan_arr[@]}
[[ ${#check_arr[@]} -gt $max_len ]] && max_len=${#check_arr[@]}
[[ ${#move_arr[@]} -gt $max_len ]] && max_len=${#move_arr[@]}
[[ ${#switch_arr[@]} -gt $max_len ]] && max_len=${#switch_arr[@]}

# 遍历索引,拼接每一行CSV内容
for ((i=0; i<max_len; i++))
do
    scan_val=${scan_arr[$i]:-}
    check_val=${check_arr[$i]:-}
    move_val=${move_arr[$i]:-}
    switch_val=${switch_arr[$i]:-}
    echo "${scan_val},${check_val},${move_val},${switch_val}" >> results.csv
done
注意事项
  • 你原脚本中类别判断写的是Switch Distances:,和提供的TXT结构里的Switch Times:不一致,脚本已做修正,如果实际文件中确实是Switch Distances可自行改回判断条件
  • 脚本会自动合并所有输入文件的同类别数据,若不同类别的数据行数不一致,缺少的位置会自动留空
  • 生成的results.csv第一行为表头,后续每一行对应四个类别的同位置数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:48:01