Skip to content

在线从文本中删除重复行

在线从文本中删除重复行——免费、即时、100% 在你的浏览器里完成。可忽略大小写或空白,保留首次或末次出现,并显示删除了多少重复行。还能排序与清理。无需注册。

无追踪 浏览器中运行 免费
所有处理都在你的浏览器本地完成。不会向任何服务器发送数据。
排序
去重
清理
已审核保序去重、首次/末次保留正确性、大小写与空白不敏感匹配、确定性流水线顺序,以及准确的重复计数统计。 — Go Tools 工程团队 · 2026年7月13日

我们的团队针对精确、大小写不敏感和空白不敏感匹配、首次保留和末次保留出现处理、顺序保持、组合排序与删除空行、CRLF/LF/CR 行拆分以及准确的重复计数统计,验证了这款删除重复行工具。

删除重复行是什么意思?

删除重复行——去重,或叫「dedupe」——是指扫描一段以换行分隔的文本,只保留每个不同行的一份副本。这是任何与数据打交道的人都会遇到的最常见清理任务之一:把累积了重复的邮件列表压缩、把日志缩减为它的唯一消息、找出电子表格某列中的不同值,或把多个列表合并成一个干净的集合。

有趣的问题在于:什么算作重复。逐字节比较是严格的答案,但真实数据更杂乱。两行可以看着完全一样,却相差一个尾随空格,或只在大小写上不同——Errorerror。本工具让你自己决定:默认忽略大小写,你也可以启用空白不敏感比较,让各行按其修剪、转小写后的形态匹配。这样你按行的含义去重,而不是按它的确切编码,这几乎总是你真正想要的。

另一个决定是保留哪一份副本。保留首次出现会保持原始顺序、也是默认;保留末次在较晚条目覆盖较早条目时很有用。无论哪种方式,结果都是确定性的,实时统计标记会精确告诉你删除了多少重复,让你永远不必盲目信任工具。

去重与排序及其他清理天然搭配。本工具把它们折进一个面板:删除重复,然后可选地排序、修剪空白、丢掉空行、反转或添加行号。当排序才是主角时,请使用配套的文本行排序工具,它共用同一套引擎。要统计文本的行数和词数,请用字数统计;要看列表两个版本之间改了什么,请用文本对比;要在去重前规范大小写,请用大小写转换

一切都完全在你的浏览器里进行、没有上传,所以给一个保密列表去重,就和在本地编辑它一样私密。粘贴,唯一结果一秒内即可复制。

Input:
  alice@example.com
  bob@example.com
  alice@example.com
  ALICE@example.com

Exact dedupe (case-sensitive):
  alice@example.com
  bob@example.com
  ALICE@example.com

Case-insensitive dedupe (default):
  alice@example.com
  bob@example.com   ← ALICE collapsed into alice

核心特性

保序去重

默认让每个唯一行以其原始顺序保留一次——行为与 awk '!seen[$0]++' 相同,但无需终端。你的列表保持你粘贴时的次序,只是没有了重复。

保留首次或末次出现

选择每一行的首次还是末次出现存活。首次保留为通用清理保持顺序;末次保留在较晚条目覆盖较早条目时理想,比如配置或环境值。

大小写不敏感匹配

默认情况下 ErrorerrorERROR 合并成一行——大多数列表的自然选择。当大小写有意义、重复必须精确匹配时,打开「区分大小写」。

空白不敏感匹配

「忽略首尾空格」抓住那些只差一个尾随空格或制表符的隐形重复——这是从电子表格和 PDF 粘贴的数据里「相同」行去重失败的头号原因。

实时重复计数

统计标记随键入显示 12 行 → 9 行 · 删除 3 个重复。你随时确切知道合并了多少重复——不用猜工具是否真的做了什么。

去重 + 排序一趟完成

启用一个排序顺序,一步得到唯一、按字母(或自然、或按长度)排序的列表。去重先执行、排序随后,因此不会丢失任何东西,输出既干净又有序。

清理开关

同一个面板还能修剪空白、丢掉空行、反转顺序并为结果编号。把它们中的任意几个叠在去重之上,一份混乱粘贴的列表就在一个地方变成干净、唯一、可直接粘贴的输出——无需脚本。

100% 浏览器端隐私

你的文本永远不会离开页面——不上传、不记录、不分析。对邮件列表、访问日志和保密数据都很安全。你可以在 Network 面板自行验证:去重产生的请求数为零。

删除重复行示例

删除精确重复

apple
banana
apple
cherry
banana
apple
banana
cherry

默认行为:每一行只在其首次出现时保留一次,之后的精确重复被丢弃。原始顺序保持不变。统计标记会报告 5 行 → 3 行 · 删除 2 个重复

忽略大小写

Error
error
ERROR
Warning
Error
Warning

在「区分大小写」关闭(默认)时,ErrorerrorERROR 被视为同一行,因此只保留第一个。打开「区分大小写」则把三者作为不同条目保留。

忽略首尾空白

apple
  apple  
banana
banana
apple
banana

启用「忽略首尾空格」,让 apple apple 比较相等。这能抓住那些困扰从电子表格、PDF 和终端复制来的数据的隐形重复——尾随空白常悄悄混进去。

保留末次出现

v1
v2
v1
v3
v2
v1
v3

把「保留出现」切到末次,每一行的最后一次出现会以其最后位置存活。这里保留了第二个 v1、删除了第一个。当较晚的条目覆盖较早的时很有用,比如环境变量或配置覆盖。

去重并同时排序

dog
cat
dog
bird
cat
bird
cat
dog

打开升序排序,一步得到干净、唯一、按字母排序的列表。去重先执行、排序随后,因此输出既唯一又有序——非常适合把杂乱粘贴的一列整成整齐集合。

删除空行和重复

alpha

beta
alpha

gamma
alpha
beta
gamma

在去重的同时启用「删除空行」,一次丢掉空行和重复。统计标记会把两者分开:6 行 → 3 行 · 删除 1 个重复 · 删除 2 个空行

统计存在多少重复

a
b
a
a
c
b
a
b
c

即使你只关心数量,去重也能给出答案:统计标记显示 6 行 → 3 行 · 删除 3 个重复。这是不必手工计数就能了解一个列表里藏了多少重复的快捷方式。

把两个列表合并成唯一条目

red
green
blue
green
yellow
red
red
green
blue
yellow

把两个列表首尾相连粘贴、再去重,即可得到并集——每一行都不同、无重复、保持首次出现顺序。这是无需电子表格公式、合并邮件列表、标签集或 ID 列表的最快方式。

如何删除重复行

  1. 1

    粘贴或键入你的文本行

    把文本放进输入框。每个换行是单独的一行。重复随键入即时删除——没有提交按钮。末尾的换行会被忽略,不会被算作额外的空行。

  2. 2

    选择什么算作重复

    保持「区分大小写」关闭,把 Foofoo 视为相同,或打开它让它们分开。启用「忽略首尾空格」以抓住只差多余空白的行。

  3. 3

    选择保留哪次出现

    「保留出现」默认为首次,保持原始顺序。切到末次,当每一行的最后一次出现应当胜出时——适合较晚条目覆盖较早条目的场景。

  4. 4

    按需添加排序或清理

    启用一个排序顺序给唯一结果排字母序,或打开「删除空行」和「修剪每行」在同一趟里整理列表。统计标记会显示每个开关的效果。

  5. 5

    复制唯一结果

    点击「复制」把去重后的输出放进剪贴板。用「重置」清空两个框,或用「示例」载入一个范例列表。整个过程中没有任何上传。

常见去重错误

空白藏起了重复

看着相同、却相差一个尾随空格或制表符的行不是精确重复,所以会存活。启用「忽略首尾空格」以按修剪后的形态比较。这是最常见的去重意外,尤其在电子表格和 PDF 数据里。

✗ 错误
精确匹配("apple " ≠ "apple"):
  apple
  apple     ← 尾随空格,被当作唯一保留
  banana
✓ 正确
忽略空白:
  apple
  banana

大小写差异被当作唯一

在「区分大小写」开启时,Errorerror 是不同的行、两者都会存活。如果你本意是让它们相同,请关闭「区分大小写」(默认)。反过来,在大小写有意义时关闭它,可能会合并你本想保留分开的行。

✗ 错误
开启区分大小写:
  Error
  error
  ERROR   ← 三个都保留
✓ 正确
不区分大小写(默认):
  Error   ← 其余被合并

以为非相邻的重复会保留

与命令行 uniq 不同,本工具删除列表中任意位置的重复,而不仅仅是相邻的——所以你不需要先排序。如果你其实只想合并连续的重复,那本工具不是对的选择;请改为排序或重构你的数据。

✗ 错误
假设 uniq 行为(仅相邻):
  a
  b
  a   ← 以为会保留,但被删除了
✓ 正确
完整去重(本工具):
  a
  b   ← 后面的 'a' 无论出现在哪都会被删除

把删除空行与去重混为一谈

去重会合并重复的空行、但保留一个;它不会删除所有空行。要丢掉每一个空行,请启用「删除空行」。统计标记会分别报告这两个数字,让你能分辨删掉的是空行还是真正的重复。

✗ 错误
仅去重(保留一个空行):
  alpha
  (空行)
  beta
✓ 正确
去重 + 删除空行:
  alpha
  beta

删除重复行:用例

清理邮件与联系人列表
粘贴一份累积了重复的导出邮件列表,得到一个唯一的集合。启用大小写与空白不敏感匹配,让 Bob@x.combob@x.combob@x.com 全都合并成一个地址。
把日志缩减为唯一消息
给嘈杂的日志去重,看到不同的错误或事件行而没有重复。末次保留在每条消息的最新一次出现比首次更重要时很方便。
找出一列中的唯一值
从 CSV 或电子表格里复制一列、去重,输出就是不同值的集合——并附带存在多少重复的计数,这也顺带成了快速的基数检查。它还能让你无需电子表格公式就从粘贴的列里找出重复行、剥掉重复行。
无重复地合并列表
把两个或更多列表首尾相连粘贴、再去重,得到它们的并集:每一行都不同、无重复、保持首次出现顺序。对一次性合并标签、ID 或名字,比电子表格公式更快。
去重安全词表
完全离线地合并并清理密码词表、子域名列表或模糊测试字典。由于每项操作都在本地,敏感的安全数据留在你的机器上、绝不发往外部服务。
整理 import 或依赖列表
删除复制粘贴时混进来的重复 import 语句、包名或依赖条目。加一个排序顺序,产出一份规范、唯一的列表,让未来的 diff 保持精简。
为分析准备数据
在计数、绘图或加载数据前剥掉重复,以免重复扭曲你的结果。搭配字数统计来度量清理后的列表,或搭配文本对比与另一个版本比较。
为 SEO 去重关键词列表
关键词研究导出里满是近似重复。在这里删除精确重复,可选地转小写并修剪,得到一份干净的唯一关键词集,再去分组或映射到页面。

去重是如何工作的

哈希集合去重
各行用哈希集合(JavaScript 的 SetMap)去重,键为每一行的比较形态,即便对大列表也给出线性时间性能。每一行的键只计算一次,并以常数时间查找。
比较键规范化
用于匹配的键由行派生而来:若「忽略首尾空格」开启则先修剪,若「区分大小写」关闭则再转小写。出现在输出里的是原始行、而非规范化的键,所以存活行的大小写和空格得以保留。
首次保留 对 末次保留
首次保留在某行的键第一次被看到时把它推入结果、跳过之后的重复。末次保留计算每个键的最终索引、只保留该索引处的行,因此存活的那份落在其最后位置,而整体顺序仍跟随输入。
行拆分(CRLF / LF / CR)
各行按任意换行约定分隔——\r\n(Windows)、\n(Unix)或 \r(经典 Mac)——因此混合或粘贴的输入都能直接用。处理前会丢弃一个末尾换行,这样以换行结束的文件不会在底部登记一个幻影空重复。
确定性的流水线顺序
流水线按固定序列运行——空白修剪,然后删除空行,然后去重,然后任意排序或随机打乱,然后反转,然后行号。因为重复在可选的排序步骤之前就被合并,打开一个排序顺序会重排唯一集合、而绝不丢掉一个不同的行。
重复与空行分别计数
统计标记独立跟踪删除的重复数和删除的空行数,计算方式是每个阶段前后的行数差。这让你能看到例如 删除 1 个重复 · 删除 2 个空行,而不是一个合并的数字。
浏览器内,无需 worker
所有去重都在你浏览器的主线程运行、没有服务器往返。典型列表瞬间完成;因为算法是线性且基于集合的,性能能优雅地扩展到很大的输入而不冻结页面。

去重最佳实践

修剪空白以抓住隐藏的重复
重复存活最常见的原因是不可见的尾随空白。给从电子表格、PDF 或终端粘贴的数据去重时,启用「忽略首尾空格」,让各行按其修剪后的形态比较。如果删除的重复数比你预期的低,通常就是空白在作祟。
有意识地决定大小写敏感
对邮箱、标签和人类可读的列表,保持「区分大小写」关闭,让 Foofoo 合并。只对像标识符或哈希这类大小写有意义、A1B2a1b2 确实不同的数据才打开它。选错会悄悄改变哪些行存活。
覆盖语义用末次保留
当较晚的条目应当胜出时——配置覆盖、环境变量、以最新状态为准的日志——把「保留出现」切到末次。对应从顶部保持顺序的通用列表清理,保持默认的首次。
在计数或分析前先去重
重复会扭曲计数、图表和聚合。先删除重复,再度量。统计标记也顺带成了快速的基数检查:输入行数与输出行数之差告诉你数据带了多少重复。
去重后排序得到规范列表
如果你需要一份稳定、可比较的列表——用于配置文件、清单或 diff——请在去重的同时启用一个排序顺序。一份唯一、有序的列表产生最小的 diff,也便于用文本对比与另一个版本比较。
复制前用实时计数验证
复制前扫一眼统计标记。12 行 → 9 行 · 删除 3 个重复 确认工具做了你想做的。如果数字看着不对——你预期有重复却删了零个——回头检查大小写和空白设置。

常见问题

这个工具是做什么的?
它从一段文本中删除重复行,让每一行唯一地保留一次。当你粘贴或键入时,去重结果会即时出现,并实时显示输入行数、输出行数以及删除了多少重复。你可以控制什么算作重复(忽略大小写、忽略空白),选择保留首次或末次出现,还能在同一趟里选择性地排序、修剪、删除空行或添加行号。一切 100% 在你的浏览器客户端运行——没有任何东西被上传、记录或存储——因此对邮箱、日志和任何保密列表都很安全。你可以在浏览器 Network 面板确认:去重触发的网络请求数为零。
它保留重复项的首次还是末次出现?
默认保留首次出现、删除之后的重复,这会保持你列表的原始顺序。把「保留出现」切到末次,则改为保留每一行的最后一次出现——存活的那一行随之落在它的最后位置。首次保留在大多数时候是正确选择(这也是 sort -u 和多数去重工具的做法);末次保留在较晚条目覆盖较早条目时很方便,比如配置覆盖、环境变量,或以最新状态为准的日志。无论哪种方式,统计标记报告的重复数量都相同。
我的文本会被上传到任何地方吗?
不会。去重以及其他每一项操作都完全在你的浏览器里用 JavaScript 完成。你的文本永远不会被传输、永远不会保存在任何服务器、永远不会被记录、永远不会被分析。这让本工具可以放心用于邮件列表、访问日志、内部数据,以及任何你不会粘进联网服务的内容。没有 cookie 捕获你的输入,也没有第三方分析读取你键入的内容。打开浏览器开发者工具、在粘贴一个巨大列表时盯着 Network 面板——你会看到请求数为零,因为工作发生在本地。
如何删除重复但忽略大小写?
保持「区分大小写」关闭——这就是默认设置。关闭时,ErrorerrorERROR 被视为同一行、合并成单个条目(保留最先遇到的那个,保持其原始大小写)。只在大小写有意义、ID 应与 id 分开时才打开「区分大小写」。大小写处理作用于比较、而非输出:存活的那一行保持它原本的大小写;改变的只是哪些行算作重复的判定。
为什么我看起来相同的行没有被去重?
元凶几乎总是不可见的空白——一个尾随空格、一个制表符,或一个不间断空格——它让两行逐字节不同,即便看着一样。打开「忽略首尾空格」,让各行在修剪后再比较,重复就会被合并。这在从电子表格、PDF 和终端输出粘贴的数据里极其常见。如果行仍然不合并,它们可能相差一个内部字符(双空格对单空格,或弯引号对直引号);修剪只处理两端。
删除重复会改变我行的顺序吗?
不会——在首次保留(默认)下,存活的行保持原始顺序;只有重复出现被删除。所以对 a, b, a, c 去重会按顺序得到 a, b, c。如果你还想让结果排序,请启用一个排序顺序,工具会先去重、再排序。在末次保留下,顺序仍基于原始位置,但每个存活行移动到其最后一次出现所在的位置。在每种模式下,输出都是确定性的,所以相同的输入和设置总是产生相同的结果。
我能同时删除重复并排序吗?
可以。在去重开启时启用一个排序顺序(升序或降序),你会在一步内得到干净、唯一、有序的列表。流水线先删除重复、再排序,因此不会丢失任何东西。如果排序是你的主要目标、去重是次要的,配套的文本行排序工具共用同一套引擎、并默认启用排序。两个工具都暴露完整的选项集;它们只在以哪个任务为主上有所不同。
空行会怎样处理?
默认情况下空行和其他行一样对待:如果同一空行出现两次,重复会被删除,但单个空行会被保留。如果你想完全丢掉所有空行和只含空白的行,请启用「删除空行」——统计标记会把它们与重复分开计数,于是你能看到 6 行 → 3 行 · 删除 1 个重复 · 删除 2 个空行。你输入末尾的单个换行会被当作行终止符、而非额外的空行,因此它不会扭曲计数。
列表大小有上限吗?
工具本身不设硬性上限;它只受你浏览器内存以及你能粘进 textarea 的文本量限制。去重使用哈希集合,因此即便对大列表也很快——数万行是瞬时的,数十万行会略有停顿完成。因为一切都在本地运行,大列表在这里往往比必须先上传数据的服务器端工具更快。对数百万行的文件,命令行工具如 sort -uawk '!seen[$0]++' 会更顺手,但对日常列表,本工具轻松应对。
这与命令行(sort -u、awk、uniq)相比如何?
sort -u 删除重复但也会排序,而 uniq 只合并相邻的重复(所以它要求先排序好的输入)。awk '!seen[$0]++' 删除重复的同时保持原始顺序——和本工具的首次保留模式一样——但需要终端。本工具给你保序去重、首次或末次保留、大小写与空白不敏感比较、可选排序和实时计数,全都无需离开浏览器或安装任何东西。当列表已经在剪贴板上而不是在文件里时,它是最快的选择。
这比在 Excel 或 Notepad++ 里删除重复行快在哪?
在 Excel 里你会对一列用 数据 → 删除重复项,而 Notepad++ 需要 TextFX 或「先排序再 uniq」插件——两者都要求数据已经在那个应用里。本工具在文本一进剪贴板就能工作:粘贴、重复行即时删除,带大小写与空白不敏感匹配、首次或末次保留,以及那些工具不显示的实时重复计数。它还保持原始顺序,不像 Excel 的基于行的删除或先排序方案,而且没有任何上传。当你只需要快速给一段文本去重时,它胜过切换到电子表格或安装插件。
我能用它找出一列中的唯一值吗?
可以。从电子表格或 CSV 里复制出单独一列、粘贴到这里,去重后的输出就是唯一值的集合。启用「忽略首尾空格」以抓住那些只差多余空白的值,若想让它们按字母排列就打开一个排序顺序。统计标记会告诉你存在多少重复,这也顺带成了衡量该列基数的快捷办法。完成后把唯一结果粘回你的表格或查询里。

大小写转换器 — UPPERCASE、lowercase、camelCase 一次搞定

文本处理

在浏览器里把文本一键转成 UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE 等共 15 种命名格式。免费、纯本地、无需注册。

Lorem Ipsum 生成器 — 免费占位文本工具

文本处理

即时生成 Lorem Ipsum 占位文本 — 按段落、句子、单词、字节或列表生成。可复制或下载为纯文本、HTML、Markdown 或 JSON。100% 免费、隐私、纯浏览器运行,无需注册。

免费正则表达式测试器 — 在线实时匹配与调试

文本处理

在浏览器里实时测试正则表达式:高亮匹配、捕获组、命名分组、替换预览、字符串切分与逐 token 解释,支持 JavaScript(ECMA-262)方言、g/i/m/s/u/y/d 七个 flag、ReDoS 超时保护。100% 本地运行、免费、无需注册。

URL Slug 生成器 — 一键把任意文本转成 slug

文本处理

在线把任意标题即时转成干净、利于 SEO 的 URL slug。可音译重音字符与西里尔字母,也可保留 Unicode 文字。100% 本地运行,数据不离开浏览器。

按字母与自然顺序排序文本行

文本处理

在浏览器里对文本行排序:按字母顺序、数字顺序(自然排序)或行长度,升序或降序皆可。免费在线行排序工具,100% 纯本地运行。还能去重、反转与清理列表。无需注册,数据不上传。

在线文本对比与差异工具

文本处理

在浏览器内即时对比两段文本。双栏并排展示、行内单词级高亮、统一 diff 补丁导出,支持忽略大小写、空白与空行。100% 本地浏览器处理,无需上传,文本不离开你的设备。