文本去重
删除文本中重复的行。
这个工具能做什么
文本去重解决的是一个很具体的问题:一段多行文本里混进了重复的行,你想把它们清掉,但又要保持原来的先后顺序。把内容粘进输入框,工具会逐行扫描,保留每一行第一次出现的样子,把后面再次出现的相同行删掉,处理完还会告诉你一共移除了多少行、最后剩下多少行。默认按整行精确匹配来判断重复;如果你的数据两端带着不定的空格,或者大小写不统一,可以打开忽略首尾空格、忽略大小写两个开关,让判重的标准更宽松一些。
它的工作方式和多数语言里的常规做法一致:先按换行符把文本切成行数组,再维护一个哈希集合(Set)记录已经见过的行。每读到一行,先按你选的规则生成一个用于比较的键——不忽略任何东西时键就是整行原文,勾了忽略首尾空格就先做 trim,勾了忽略大小写就再转成小写,两个都勾就先 trim 再转小写。如果这个键已经在集合里,说明这行重复,直接跳过;否则把键记进集合,并把这一行的原文写进结果。用哈希集合而不是两两比较,整个过程接近线性的 O(n),几万行也能瞬间处理完;顺序遍历又天然保留了每行第一次出现的位置。要强调的是,比较键只决定判不判重,真正留在结果里的永远是原始那一行,trim 和转小写都不会改动你保留下来的文本。
最常见的用途是清洗名单类数据。比如手头有一份从几个来源拼起来的邮箱或手机号清单,同一个地址在不同文件里重复出现,直接粘进来去重,就能得到每个只出现一次的干净列表,再导回 Excel 或数据库。整个去重是在你浏览器本地完成的,名单不会上传服务器,处理敏感数据也放心。另一个典型场景是处理日志和采集结果:抓下来的 URL、报错堆栈、访问记录里常有大量完全相同的行,去重之后行数可能从几万降到几百,一眼就能看清到底有多少种不同的情况。如果原始数据里同一个域名有的写成 EXAMPLE.COM、有的写成 example.com,开启忽略大小写就能把它们当成同一条,避免因大小写不同而漏去重。
有几个边界值得留意。它做的是整行去重,判断的是一整行是否相同,不会识别“意思相近”或者一行是另一行子串的情况,也不做跨行的模糊匹配;要按某个字段去重,得先把数据整理成一行一条。它和命令行里的 uniq、sort -u 也不同:uniq 只能去掉相邻的重复行,sort -u 会顺带改变顺序,而这里是保留原始顺序、对全局重复都生效。空行同样算作“一行”,多个空行也会被去重成第一个;文本结尾若有多余换行,可能表现为一个空行参与判重。遇到结果和预期对不上时,优先检查是不是首尾空格、大小写或空行的问题。
文本去重是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“文本去重”、“去除重复行”、“删除重复”,说的都是这个。
常见使用场景
- 合并多来源的邮箱名单后去掉重复地址
- 清理日志里大量重复的报错行
- 给采集到的 URL 列表去重再批量抓取
- 统计一份数据里到底有多少种不同的行
- 忽略大小写去掉重复的域名或用户名
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。