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

如何在Linux环境下按第二列首字母的字母顺序拆分大型CSV文件

按CSV第二列首字母拆分文件的实现方案

方案1:awk单行命令(适合Unix/Linux/macOS环境,大文件性能最优)

直接在终端执行以下命令即可,无需额外安装依赖,逐行处理不会占满内存:

awk -F ',' '{
    # 取第二列第一个字符转为小写
    first_letter = tolower(substr($2, 1, 1))
    # 将当前行追加到对应字母命名的csv文件
    print $0 >> first_letter".csv"
    # 关闭文件避免句柄超限,适配首字母数量极多的场景
    close(first_letter".csv")
}' 你的原文件路径.csv

执行完成后会在当前目录下生成对应首字母命名的csv文件,内容符合需求。

方案2:Python实现(跨平台,支持自定义扩展)

如果是Windows环境或者需要额外加校验、表头处理等逻辑,可以用以下Python脚本,同样逐行读取适配大文件:

import csv
from collections import defaultdict

if __name__ == "__main__":
    # 按首字母缓存文件写入对象,避免重复打开文件
    writers = defaultdict(lambda: [None, None])
    source_path = "你的原文件路径.csv"

    try:
        with open(source_path, "r", encoding="utf-8") as source_f:
            reader = csv.reader(source_f)
            for row in reader:
                # 跳过空行、列数不足的异常行
                if not row or len(row) < 2 or not row[1].strip():
                    continue
                first_letter = row[1].strip()[0].lower()
                # 首次遇到该首字母时创建对应文件和写入器
                if writers[first_letter][0] is None:
                    f = open(f"{first_letter}.csv", "w", encoding="utf-8", newline="")
                    writers[first_letter] = [f, csv.writer(f)]
                # 写入当前行
                writers[first_letter][1].writerow(row)
    finally:
        # 统一关闭所有打开的文件
        for file_obj, _ in writers.values():
            if file_obj:
                file_obj.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:36:03