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

Linux下按大小拆分大CSV文件并为所有拆分文件保留表头

拆分大CSV文件并为所有拆分文件保留3行表头

操作步骤

1. 提取原文件的3行表头

先将原CSV的前3行表头保存到临时文件:

head -n 3 TEST-REPORT-YYYYMMDDHHMMSS.CSV > header.csv

2. 拆分原文件的数据部分(跳过表头)

只处理原文件第4行及以后的内容,按5MB大小拆分生成临时文件:

tail -n +4 TEST-REPORT-YYYYMMDDHHMMSS.CSV | split -d -a3 -b 5M --additional-suffix=.csv - temp_part_

参数说明:

  • tail -n +4:跳过前3行表头,仅读取数据内容
  • split -d -a3 -b 5M:按5MB拆分,生成带三位数字后缀的文件(001、002...)
  • --additional-suffix=.csv:为拆分文件添加.csv后缀
  • -:指定从标准输入读取数据(即tail输出的内容)
  • temp_part_:临时拆分文件的前缀

3. 合并表头并重命名为目标格式

通过循环将表头合并到每个临时拆分文件,并重命名为你需要的格式:

# 提取原文件名中的日期时间段
date_part=$(echo "TEST-REPORT-YYYYMMDDHHMMSS.CSV" | cut -d'-' -f3 | sed 's/.CSV//')

# 遍历所有临时拆分文件
for part in temp_part_*.csv; do
    # 提取序列号(去掉前导零,得到1、2、3...)
    seq_num=$(echo "$part" | sed 's/temp_part_//; s/.csv//' | awk '{print int($0)}')
    # 合并表头与数据,生成最终文件
    cat header.csv "$part" > "TEST-REPORT-$seq_num-$date_part.CSV"
    # 删除临时文件
    rm "$part"
done

# 清理临时表头文件
rm header.csv

可选调整

如果需要序列号保留三位(如001、002),只需修改提取序列号的代码:

seq_num=$(echo "$part" | sed 's/temp_part_//; s/.csv//')

最终文件名会变成TEST-REPORT-001-YYYYMMDDHHMMSS.CSV这类格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:29