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

如何使用bash脚本将CSV按指定列拆分为制表符分隔的多份sheet

Bash脚本实现CSV按列范围拆分为多sheet/多文件

前置说明

本方案适配SQL导出的标准CSV格式,若CSV字段无内嵌逗号、换行、双引号等特殊字符,可直接使用无额外依赖的纯bash方案;若存在特殊字段格式,推荐使用csvkit工具处理避免拆分错位。

方案1:纯bash拆分输出多个独立CSV文件(无额外依赖)

无需安装第三方工具,直接调用系统原生命令实现拆分:

#!/bin/bash
# 配置项
INPUT_CSV="Sample.csv"  # 替换为你的CSV文件路径
DELIMITER=","           # 若为制表符分隔则改为$'\t'
# 拆分规则:格式为"列范围:输出文件名",列序号从1开始计数
SPLIT_RULES=(
    "1-3:sheet1_基础信息.csv"
    "4-5:sheet2_用户国家.csv"
    "6-7:sheet3_支持信息.csv"
    # 190列可按需求继续追加规则
)

# 执行拆分
for rule in "${SPLIT_RULES[@]}"; do
    IFS=":" read -r col_range output_file <<< "$rule"
    cut -d "$DELIMITER" -f "$col_range" "$INPUT_CSV" > "$output_file"
    echo "已生成:$output_file"
done

使用前可执行head -1 Sample.csv | tr ',' '\n' | nl查看所有列对应的序号,方便配置拆分范围。

方案2:生成单个XLSX文件(内含多个sheet)

如果需要输出为单个Excel文件、每个拆分范围对应一个sheet,需先安装依赖:

# 安装csvkit工具
pip install csvkit

拆分脚本如下:

#!/bin/bash
# 配置项
INPUT_CSV="Sample.csv"
OUTPUT_XLSX="拆分结果.xlsx"
DELIMITER=","
# 拆分规则:格式为"列范围:sheet名称"
SPLIT_RULES=(
    "1-3:基础信息"
    "4-5:用户国家"
    "6-7:支持信息"
)

TEMP_DIR="./.temp_csv_split"
mkdir -p "$TEMP_DIR"

# 拆分生成临时CSV文件
for rule in "${SPLIT_RULES[@]}"; do
    IFS=":" read -r col_range sheet_name <<< "$rule"
    csvcut -d "$DELIMITER" -c "$col_range" "$INPUT_CSV" > "$TEMP_DIR/$sheet_name.csv"
done

# 合并为多sheet Excel
csvmerge --output "$OUTPUT_XLSX" --prefix-sheet-names 0 "$TEMP_DIR"/*.csv

# 清理临时文件
rm -rf "$TEMP_DIR"
echo "已生成多sheet Excel文件:$OUTPUT_XLSX"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:06