Skip to content

在线从文本中删除重复行

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

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

删除重复行是什么意思?

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

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

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

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

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

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]++'` 相同,但无需终端。你的列表保持你粘贴时的次序,只是没有了重复。

保留首次或末次出现

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

大小写不敏感匹配

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

空白不敏感匹配

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

实时重复计数

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

去重 + 排序一趟完成

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

清理开关

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

100% 浏览器端隐私

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

删除重复行示例

删除精确重复

apple
banana
apple
cherry
banana
apple
banana
cherry

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

忽略大小写

Error
error
ERROR
Warning
Error
Warning

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

忽略首尾空白

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

    选择什么算作重复

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

  3. 3

    选择保留哪次出现

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

  4. 4

    按需添加排序或清理

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

  5. 5

    复制唯一结果

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

常见去重错误

空白藏起了重复

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

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

大小写差异被当作唯一

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

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

以为非相邻的重复会保留

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

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

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

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

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

删除重复行:用例

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

去重是如何工作的

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

去重最佳实践

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

常见问题

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