如何删除重复行
- 在上方文本框中粘贴列表,每行一项。
- 去重结果框会立即显示结果:每一行只保留一次,并按首次出现的顺序排列。
- 按需调整选项,然后点击复制结果,或点击下载 .txt保存为
unique-lines.txt。
结果上方会显示处理摘要,例如7 行 → 5 行(不重复) · 已删除 1 个重复行 · 已删除 1 个空行。第一个数字是输入的总行数,空行也计算在内。
各选项的作用
- 忽略大小写(默认关闭)– 把“Apple”“apple”“APPLE”视为同一行,保留第一次出现时的写法。
- 忽略首尾空格(开启)– 比较时忽略行首和行尾的空格与制表符,结果中也会去掉它们。行中间的空格仍然有区别,“New York”和中间有两个空格的“New York”是不同的行。
- 删除空行(开启)– 从结果中去掉空行和只含空格的行。关闭后,空行会像普通行一样处理,因此只保留第一个空行。
- 按 A→Z 排序(关闭)– 对去重后的行进行排序,不区分大小写和重音符号,数字按自然顺序排列(“item 2”排在“item 10”前面)。在中文页面中,汉字按拼音顺序排列。需要其他排序方式时,请使用文本行排序。
示例
假设输入下面七行,其中第三行的 apple 后面多了一个空格,第四行是空行:
apple · Banana · apple␣ · (空行) · cherry · banana · Apple
- 默认设置下保留
apple、Banana、cherry、banana、Apple。行尾空格被忽略,所以第三行算作第一行的重复,空行被删除。 - 开启忽略大小写后只剩
apple、Banana、cherry,摘要显示已删除 3 个重复行。 - 关闭忽略首尾空格后,
apple␣会作为单独的一行保留下来。看起来一模一样的两行都没被删掉,最常见的原因就是这种多余的空格。
中文列表也一样。把北京、上海、北京、广州每行一个输入,结果是北京、上海、广州;开启排序后按拼音变为北京、广州、上海。邮箱列表 [email protected]、[email protected]、[email protected]、[email protected]、[email protected] 在开启忽略大小写后只剩三个地址。@ 后面的域名本来就不区分大小写,而实际上几乎所有邮件服务商也不区分 @ 前面部分的大小写,所以合并通常没有问题。
工作原理
工具会从上到下逐行读取,并记录已经出现过的行(在应用大小写和空格选项之后)。已经记录过的行会被跳过,只有新出现的行才会加入结果。因为总是保留第一次出现的那一行,所以和依靠排序去重的方法不同,原有顺序得以保持。在命令行中,awk '!seen[$0]++' list.txt 能完成同样的工作,而 sort -u 在去重的同时还会改变行的顺序。在电子表格中,UNIQUE 函数或 Excel 自带的删除重复项功能起同样的作用。
适用场景
- 合并两份客户名单或邮件列表:把一份粘贴在另一份下面,复制结果,就不会给同一个人发两次邮件。
- 整理 SEO 或广告关键词、话题标签、标签和商品编码列表。
- 把日志文件或错误报告精简为互不相同的消息。
- 从多个来源汇总生词表或名单。
技巧与常见错误
- 每行只能放一个值。如果值之间用逗号分隔,请先把它们分成每行一个。反过来,要把结果变成用逗号分隔的一行,可以在删除换行符中选择“逗号”。
- 看不见的差异会让两行都被保留:用制表符代替空格、不间断空格、中文引号和英文引号、全角和半角字符(如“A”和“A”、全角空格和半角空格),看起来相似,实际上是不同的字符。
- 不会忽略重音符号。即使开启忽略大小写,“café”和“cafe”也仍是不同的行;同理,简体字和繁体字(如“发”和“發”)也会被当作不同的行。
常见问题
重复的行保留的是哪一个?
第一次出现的那一行。之后出现的相同行会被删除,剩下的行保持原来的顺序,除非你开启了排序。
能看到删除了哪些行吗?
摘要只显示删除的数量。想知道具体是哪几行,可以把原始列表和结果粘贴到文本对比中,被删除的行都会高亮显示。
支持中文、日文、韩文吗?
支持。任何语言都会逐字精确比较。忽略大小写选项对没有大小写之分的文字不起作用。
有行数限制吗?
没有固定限制。所有处理都在浏览器中完成,即使是几十万行的列表,在普通电脑上也能很快处理完;只有非常大的文件才会受到设备内存的限制。