匹配选项绝不改写你的文本
忽略大小写、空格或标点,只会改变什么算作重复。保留下来的内容与你输入的完全一致,原有的大写字母和空格都不会变。如果去重工具交还给你的是全部小写的文本,那它其实是在悄悄编辑你的数据,而不是在筛选,这种问题往往要很久以后才会被发现。
粘贴列表,即可得到去掉重复项的版本,或只含重复项的版本。大小写、多余空格、标点和重音各是一个独立的匹配开关,保留下来的行与你输入的完全一致。
9 行中输出 5 行,在 3 个重复行中共删除 4 行。
从 9 行中删除了 4 行。
[email protected] [email protected] [email protected] [email protected] [email protected]
按出现次数排序。如果两种写法被视为同一行,其他写法会列在下方,多余的空格或大写字母通常就藏在这里。
| 次数 | 行 | 首次出现 |
|---|---|---|
| 3 | [email protected] | 第 1 行 |
| 2 | [email protected]同时匹配:“[email protected] ” | 第 2 行 |
| 2 | [email protected] | 第 3 行 |
每一行都会按你选择的匹配规则转换成一个比较键,这些键放进一个映射表,表中记录最先产生每个键的那一行、其后又有多少行落在同一个键下,以及还有哪些其他写法属于这个键。这只需对列表遍历一次,而不必把每一行与其他所有行逐一比较,所以五万行也能瞬间完成。关键在于文本本身会怎样:什么都不会变。键只用于匹配,用完即弃,输出的是你的原始行,逐字节保持不变。改变数据的选项和改变比较方式的选项是两回事,把它们混为一谈,清理就会变成数据丢失。
邮箱、标签、文件名、URL、SKU,或任何每行一条的内容。默认会去掉空行,粘贴时字符数和行数会实时更新,你可以马上看出整份导出内容是否都已粘贴进来。
大小写、首尾空格、中间的连续空格、标点和重音规范化都是独立的开关。看不见的行尾空格是重复项躲过简单去重的最常见原因,所以这个开关默认开启。
保留第一个、保留最后一个、只保留恰好出现一次的行,或者反过来只保留重复的行。然后按字母排序、按自然顺序排序(让 item2 排在 item10 之前)、按长度排序,或按每行出现的次数排序。
忽略大小写、空格或标点,只会改变什么算作重复。保留下来的内容与你输入的完全一致,原有的大写字母和空格都不会变。如果去重工具交还给你的是全部小写的文本,那它其实是在悄悄编辑你的数据,而不是在筛选,这种问题往往要很久以后才会被发现。
保留第一次出现的行、保留最后一次出现的行、只保留恰好出现一次的行,或只保留重复的行。最后这种模式是大多数工具没有的,而当重复项本身就是你要找的结果时,正需要它:重复的订单号、被预订了两次的名字、在术语表中出现两次的词条。
普通的字母排序会把 report-10 排在 report-2 之前,因为它逐个字符比较。自然排序把数字当作数值来读,这几乎总是文件名或版本号列表真正需要的。两种排序都提供,另外还能按长度和频率排序。
每个出现不止一次的行都会连同次数和首次出现的位置一起列出。如果两种不同的写法被视为同一行,其他写法会显示在下方,这样多余的大写字母或行尾逗号就能被看到,而不是被悄悄吞掉。
从 macOS 文件名复制的文本经常采用 Unicode NFD 形式,带重音的字符被存储为一个字母加一个组合符号。它看起来与 NFC 形式完全相同,比较时却不相等。匹配前先规范化为 NFC,就能找出这类重复项,否则几乎不可能用肉眼发现。
开启计数后,每个输出行前面都会加上它出现的次数,去重后的列表就变成了一张频率表,可以直接粘贴到电子表格中。编号是另一个独立开关,适合要把列表放进文档的时候。
使用默认设置即可:它保留每行第一次出现的那一份,排序保持原始顺序。每一行都留在它首次出现的位置,只有后面的副本会被删除。这一点比听起来更重要:如果列表的顺序有意义,比如播放列表、构建顺序或一组操作步骤,一个顺带排序的去重工具就会把它毁掉。如果你想保留最后一次出现的那一份,例如导出数据中靠后的行是某条记录的较新版本,请切换为保留最后一个。
几乎总是因为某个看不见的字符:行尾空格、从网页粘贴来的不间断空格、CSV 列残留的多余逗号,或者大小写不同。开启“忽略首尾空格”并关闭“区分大小写”,大部分问题会立刻消失。如果某一对仍然无法匹配,请查看重复项表格:列在“同时匹配”后的条目显示了哪些写法被视为同一行,通常一看就能发现差别。外观相似但确实不同的 Unicode 字符,比如弯撇号和直撇号,不会被匹配,也本不应该匹配。
可以,这就是“仅重复的行”模式。它为每个出现不止一次的行显示一行,下方的表格给出每行的次数和首次出现的位置。用它来检查导出数据中的重复条目、查找在本应唯一的列表中出现两次的关键词,或确认合并操作没有引入副本,都很合适。相反的模式“仅出现一次的行”会彻底丢弃每个重复的行,包括它的第一份,当重复意味着这一行可疑时,你需要的正是这个。
自然排序把连续的数字当作数值而不是字符来读。普通的字母排序逐位比较,所以“report-10”排在“report-2”之前,因为字符 1 排在 2 前面。自然排序把 10 和 2 当作数字比较,按正确的顺序排列。文件管理器用的就是这种排序,对于任何带数字后缀的内容,比如版本号、章节、发票号、图片序列,它几乎总是你想要的。
可以,而且邮箱地址是它最常见的用途。有两点值得了解。按照规范,域名不区分大小写,所以可以放心关闭“区分大小写”,这样就能捕捉到 [email protected] 和 [email protected] 这类非常常见的重复。本地部分(即 @ 符号之前的部分)在技术上区分大小写,但实际上几乎没有服务商这样处理。Gmail 的点号和加号地址则是另一回事:[email protected]、[email protected] 和 [email protected] 都会进入同一个收件箱,但它们确实是不同的字符串,本工具不会合并它们,因为这样做对其他所有服务商都是错误的。
最多 200,000 个字符或 50,000 行,以先达到的为准。由于处理方式是用哈希表对列表遍历一次,而不是把每一行与其他所有行比较,所以始终保持流畅。超出上限的列表会被截断,页面会明确提示,而不是悄悄只处理一部分。对于非常大的导出文件,请拆分后分批处理,或在命令行中用 sort 和 uniq 就地去重。
如果保留空行,会的:每个空行都与其他空行相同,所以一连串空行会合并成一个。对列表来说,这通常正是想要的效果。如果空行在你的文本中有意义,比如用来分隔段落,那么这个工具并不适合这类内容,因为它的整个模型就是一行即一项。
不会。比较、排序和计数全部在这个标签页中完成,不会传输或存储任何内容。这正是使用这类页面的主要理由,而不必把客户名单、内部 URL 集合或用户邮箱导出粘贴到在服务器上处理数据的服务中。
“不同行数”是按当前匹配规则,你的输入中有多少种不同的行。“输出行数”是当前保留模式实际写出的行数。当你保留每行的第一份或最后一份时,两者相同;在另外两种模式下则不同:只保留出现一次的行会排除每个重复的行,只保留重复的行会排除所有只出现一次的行。比较这两个数字,可以快速看出列表中有多少内容是重复的。
这个工具不行,而且是有意为之。去重就是它的功能,所以保留下来的每一行在你的匹配规则下都是唯一的。如果你想在保留重复项的情况下排序,请改为开启计数:每个不同的行显示为一行,旁边附上出现次数,信息相同,但更易阅读,也更方便粘贴到电子表格中。
探索不断扩充的工具合集,涵盖计算、文档、写作和日常工作。