编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 文本处理 / 文本去重

文本去重

删除文本中重复的行。

输入
结果

这个工具能做什么

文本去重解决的是一个很具体的问题:一段多行文本里混进了重复的行,你想把它们清掉,但又要保持原来的先后顺序。把内容粘进输入框,工具会逐行扫描,保留每一行第一次出现的样子,把后面再次出现的相同行删掉,处理完还会告诉你一共移除了多少行、最后剩下多少行。默认按整行精确匹配来判断重复;如果你的数据两端带着不定的空格,或者大小写不统一,可以打开忽略首尾空格、忽略大小写两个开关,让判重的标准更宽松一些。

它的工作方式和多数语言里的常规做法一致:先按换行符把文本切成行数组,再维护一个哈希集合(Set)记录已经见过的行。每读到一行,先按你选的规则生成一个用于比较的键——不忽略任何东西时键就是整行原文,勾了忽略首尾空格就先做 trim,勾了忽略大小写就再转成小写,两个都勾就先 trim 再转小写。如果这个键已经在集合里,说明这行重复,直接跳过;否则把键记进集合,并把这一行的原文写进结果。用哈希集合而不是两两比较,整个过程接近线性的 O(n),几万行也能瞬间处理完;顺序遍历又天然保留了每行第一次出现的位置。要强调的是,比较键只决定判不判重,真正留在结果里的永远是原始那一行,trim 和转小写都不会改动你保留下来的文本。

最常见的用途是清洗名单类数据。比如手头有一份从几个来源拼起来的邮箱或手机号清单,同一个地址在不同文件里重复出现,直接粘进来去重,就能得到每个只出现一次的干净列表,再导回 Excel 或数据库。整个去重是在你浏览器本地完成的,名单不会上传服务器,处理敏感数据也放心。另一个典型场景是处理日志和采集结果:抓下来的 URL、报错堆栈、访问记录里常有大量完全相同的行,去重之后行数可能从几万降到几百,一眼就能看清到底有多少种不同的情况。如果原始数据里同一个域名有的写成 EXAMPLE.COM、有的写成 example.com,开启忽略大小写就能把它们当成同一条,避免因大小写不同而漏去重。

有几个边界值得留意。它做的是整行去重,判断的是一整行是否相同,不会识别“意思相近”或者一行是另一行子串的情况,也不做跨行的模糊匹配;要按某个字段去重,得先把数据整理成一行一条。它和命令行里的 uniq、sort -u 也不同:uniq 只能去掉相邻的重复行,sort -u 会顺带改变顺序,而这里是保留原始顺序、对全局重复都生效。空行同样算作“一行”,多个空行也会被去重成第一个;文本结尾若有多余换行,可能表现为一个空行参与判重。遇到结果和预期对不上时,优先检查是不是首尾空格、大小写或空行的问题。

文本去重是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“文本去重”、“去除重复行”、“删除重复”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

它是按整行去重,还是按单词或某个字段去重?
按整行。工具以换行符把文本切成行,逐行比较整行内容是否相同,不针对行内的某个单词或字段。如果你要按某一列或某个字段去重,需要先把数据整理成一行一条再粘进来。
忽略首尾空格、忽略大小写这两个选项具体影响什么?
它们只影响“是否算重复”的判断,不改动保留下来的原文。勾了忽略首尾空格,会在比较前对每行做 trim;勾了忽略大小写,会把比较键转成小写;但结果里留的仍是第一次出现的那行原始文本。
去重之后行的顺序会变吗?
不会。工具保留每行第一次出现的位置,只删掉后面重复的行,顺序和原文完全一致。这也是它和 sort -u 的主要区别——后者会把结果重新排序。
为什么两行看起来一模一样,却没有被去掉?
通常是有肉眼看不见的差异,比如首尾空格、Tab 和空格混用、全角半角、行尾的 \r,或者不可见的零宽字符。先试着勾上忽略首尾空格和忽略大小写;如果仍然去不掉,说明这两行的字符本身确实不同。
粘进来的数据会上传到服务器吗,安全吗?
不会上传。去重全过程用浏览器本地的 JavaScript 完成,文本不离开你的电脑,处理邮箱、手机号这类敏感名单也没有泄露风险。

相关工具

查看全部「文本处理」工具 →