上亿行文本批量处理教程:本地 AI 一句话完成筛选、去重、排序、合并与拆分
今天把这套方案和教程做个总结-------万能文本处理智能体-------
智能体全程离线运行,数据不出本机,依托流式引擎批量处理文本,覆盖预览、统计、筛选、删行、替换、清理、追加、提取、排序、合并、拆分、转码等 12 项能力;支持多步流水线。
一、需求分析


现在需要对这份日志做一套完整处理,步骤如下:
阶段一:摸底(只读,不改文件)
- 预览前 20 行,确认日志格式、字段分隔、编码是否正常
- 统计总行数,掌握数据规模
- 统计含
ERROR的行数,评估错误日志占比 - 统计空白行数量,判断清理工作量
阶段二:清洗(就地改写源文件)
- 删除所有空白行
- 去掉每行行首行尾的空白字符(日志常有尾随空格,影响正则匹配)
- 把
WARN统一替换成WARNING(统一日志级别写法,便于后续筛选)
阶段三:提取与分流(写新文件,源文件保留)
- 用正则
^ERROR筛出以 ERROR 开头的行,写入error.log - 从 error.log 提取所有时间戳(正则
\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}),写入error_timestamps.txt - 把 error.log 按时间戳降序排列(最新的错误排最前)
阶段四:归档与验收
- 把排好序的 error.log 按每 100 万行拆成多个小文件(方便后续单独打开分析)
- 统计最终 error 文件总行数,与阶段一的数据交叉核对
二、实现方案一:小白上手

获取: 宫中&浩气: “老罗软件”。首先,我们需要指定一个工作空间 , 智能体都是从这个工作空间里面找文件操作的。
然后就输入操作提示词就可以了, 我们简单给它三个任务步骤,如图:

然后点击执行就可以了, 2亿行,3个操作大约2分钟左右就可以执行完成! 大模型都是在本地进行推理的,全程可以不用联网!执行完成效果,如下:

三、支持的功能梳理
文本处理智能体适合处理日志、名单、配置文件、导出数据等文本。你不需要记命令,直接说出想做什么,它会自动完成处理。下面是支持的功能:
查看与统计
适合处理前先确认文件内容和规模。比如:
查看 data.log 前 20 行内容
统计 data.log 一共有多少行
统计 data.log 里含 ERROR 的行
这类操作只读,不会改动原文件。
筛选与删除
适合从大量文本里挑出需要的内容,或删掉不要的行。比如:
把 data.log 里含 ERROR 的行筛选到 错误.txt
提取以 ERROR 开头的行,输出 错误.txt
data.log 只保留含 INFO 的行,其它行删除
删除 data.log 里的所有空行
data.log 去重,保持原顺序
需要筛到新文件时,原文件会保留;需要直接改原文件时,也可以一句话说明。
替换与清理
适合批量改内容、整理格式。比如:
把 配置.env 里的 dev 全部替换成 prod
把 info 替换成 LOG,忽略大小写
去掉 messy.txt 每一行开头和结尾的空白字符
把 messy.txt 里连续多个空格压成一个
去掉 messy.txt 里的 HTML 标签
添加与提取
适合给文本补内容,或从文本里提取手机号、邮箱、网址等信息。比如:
给 订单.txt 每行行首加上 [订单]
给 订单.txt 每行行尾追加 <完成>
提取 data.log 里的手机号
从 客户资料.txt 提取所有邮箱地址,去重后写到 邮箱清单.txt
排序、合并与拆分
适合整理多个文件,或把大文件拆开处理。比如:
把 fruits.txt 按字典序升序排序
把 scores.txt 每行的数字按数值从大到小排序
把 第一章.txt、第二章.txt 和 第三章.txt 合并成 全书.txt
把 超大日志.log 每 1000 行拆成一个小文件
编码与换行
适合处理乱码、编码不统一、换行格式不一致的问题。比如:
把 data.log 转成 GBK 编码
把 gbk_data.txt 转成 UTF-8
把 data.log 的换行符改成 Windows 的 CRLF
帮我看看 乱码样本 目录里的文件是不是乱码
多步连续处理
一句话也可以包含多个步骤,智能体会按顺序自动执行。比如:
先删掉 data.log 的空行,再按字典序排序
把 应用.log 中含 ERROR 的行筛选到 错误行.txt,再把筛选结果按降序排序
先去掉 脏数据.txt 每行首尾空白,再删除空白行,最后统计剩余总行数
四、实现方案二:Python脚本
它适合这样的场景:手里有一批 .txt、.log、.csv 等文本文件,需要批量删空行、筛选关键词、替换内容、合并文件,或按条件导出结果,方便后续统计、归档和二次整理。规则固定、文件数量不多时,写个脚本往往比手工一个个改更快。
优势:
- 可批量处理目录下大量文本文件,适合成批整理
- 规则明确,处理结果稳定,重复执行一致
- 本地运行,文件不出本机,适合内部资料和敏感文件
- 可按需组合删行、筛选、替换、合并等操作
- 不依赖大模型,处理速度快,成本低
- 脚本可保存复用,后续同类任务直接再跑
劣势:
- 需要一定 Python 基础,首次运行要安装环境
- 每种需求都要自己写规则,不如自然语言灵活
- 文件编码不统一时,可能出现乱码,需要手动指定编码
- 多步骤复杂流程,脚本会越来越长,维护成本上升
- 规则写错时,可能批量改坏文件,处理前最好先备份
- 只适合规则明确的批处理,复杂语义理解不如智能体方便
下面是一个简单的 Python 实现示例:批量读取目录下的文本文件,删除空行,筛选含 ERROR 的行,并合并输出到一个新文件。如需替换、排序、拆分,可在此基础上继续扩展。
import os from pathlib import Path # 输入目录 input_root = r"path\to\your\text_files" # 输出目录 output_root = r"path\to\your\output" Path(output_root).mkdir(parents=True, exist_ok=True) # 支持的文本格式 SUPPORTED_EXT = {".txt", ".log", ".csv", ".md"} def read_lines(file_path: Path, encoding="utf-8"): """读取文件所有行""" with open(file_path, "r", encoding=encoding, errors="ignore") as f: return f.readlines() def delete_blank_lines(lines): """删除空行""" return [line for line in lines if line.strip()] def filter_lines(lines, keyword): """筛选包含关键词的行""" return [line for line in lines if keyword in line] def replace_text(lines, old, new): """批量替换文本""" return [line.replace(old, new) for line in lines] def save_lines(lines, output_path: Path): """保存结果""" output_path.parent.mkdir(parents=True, exist_ok=True) with open(output_path, "w", encoding="utf-8") as f: f.writelines(lines) def process_file(file_path: Path): ext = file_path.suffix.lower() if ext not in SUPPORTED_EXT: print(f"跳过不支持的文件:{file_path}") return print(f"处理中:{file_path}") lines = read_lines(file_path) # 1. 删除空行 lines = delete_blank_lines(lines) # 2. 筛选含 ERROR 的行 error_lines = filter_lines(lines, "ERROR") # 3. 示例:把 INFO 替换成 LOG lines = replace_text(lines, "INFO", "LOG") # 每个文件单独输出 cleaned_path = Path(output_root) / f"{file_path.stem}_cleaned{file_path.suffix}" error_path = Path(output_root) / f"{file_path.stem}_error.txt" save_lines(lines, cleaned_path) save_lines(error_lines, error_path) print(f"完成:{file_path}") print(f" 清理后文件 -> {cleaned_path}") print(f" 错误行文件 -> {error_path}") def merge_files(file_paths, output_file: Path): """合并多个文本文件""" merged = [] for file_path in file_paths: merged.extend(read_lines(file_path)) merged.append("\n") save_lines(merged, output_file) print(f"合并完成 -> {output_file}") def walk_files(root: Path): files = [] for path in root.rglob("*"): if path.is_file() and path.suffix.lower() in SUPPORTED_EXT: files.append(path) process_file(path) return files if __name__ == "__main__": all_files = walk_files(Path(input_root)) # 可选:把所有文件合并成一个 if all_files: merge_output = Path(output_root) / "merged_all.txt" merge_files(all_files, merge_output) print(f"全部处理完成,结果目录:{output_root}")
四、总结
如果只是偶尔整理几个文件,或者需求经常变化,优先用智能体方案,省事、灵活,不用记命令。只有规则固定、同类任务反复做,或者要接入内部流程时,再考虑 Python 脚本。
处理结果里,预览和统计可直接参考;删改、筛选、提取类操作建议看一眼输出文件。涉及编码转换、多步流水线或特别大的文本时,关键内容归档前核对一遍更稳妥。

浙公网安备 33010602011771号