文本处理 本地计算 开箱即用 内置示例 不留痕迹

列表去重排序

把名单、关键词、编号列表粘贴进来:自动去重(可忽略大小写)、按字母/数值/长度排序,分隔方式自动识别换行、逗号、空格,处理完显示原始条数与删除数量。

去重是整理名单、关键词、编号列表时最常用的操作:一列里混着重复的邮箱、手机号或关键词,需要保留一份并看清删掉了多少。这个工具自动识别分隔方式(换行、逗号、空格),去重的同时可选忽略大小写并按规则排序,处理完会显示原始条数与删除数量。

两点需要留意:去重默认保留首次出现的那一条,所以结果顺序与原文一致,若同时勾选排序就会按新顺序重排;另外分隔方式选「自动识别」时按换行、逗号、空格的优先级切分,文本里既有逗号又有换行时优先按换行切,跨行的一条数据不会被误拆。

使用步骤

  1. 粘贴列表内容,分隔方式保持「自动识别」即可(一行一条或逗号分隔都能处理)。
  2. 按需勾选忽略大小写(Apple 与 apple 视为重复)与排序方式。
  3. 看统计里的原始条数与删除数量,确认符合预期。
  4. 这是破坏性整理,建议先把原文复制一份留存。

计算原理与示例

分隔方式与切分规则

分隔方式选「自动识别」时按 换行 > 逗号 > 空格 的优先级切分;一行一个、逗号分隔都能直接粘。

排序规则

排序选「数值升序」时按数字大小排(10 会排在 2 后面);字母排序时 100 会排在 2 前面。

去重与忽略大小写

勾选「去重时忽略大小写」可把 Vue 和 vue 视为同一条目,保留首次出现的大小写形式。

代码示例

Shell 命令行去重与排序

# 去重且保留首次出现顺序
awk '!seen[$0]++' list.txt > unique.txt

# 去重 + 排序
sort -u list.txt > sorted.txt

# 忽略大小写去重
sort -fu list.txt > case-uniq.txt

# 对比条数
printf "去重前 %s 条 → 去重后 %s 条\n" "$(wc -l < list.txt)" "$(wc -l < unique.txt)"

JavaScript 忽略大小写去重(保序)

const dedupe = (arr, ignoreCase = false) => {
  const seen = new Set();
  return arr.filter((x) => {
    const k = ignoreCase ? x.trim().toLowerCase() : x.trim();
    if (seen.has(k)) return false;
    seen.add(k);
    return true;
  });
};

dedupe(['Apple', 'apple', 'Banana'], true); // ['Apple', 'Banana']
dedupe(['b', 'a', 'b']).sort();             // ['a', 'b']

常见问题

去重后顺序会变吗?

默认「保持原序」时,去重只删除重复项,保留每条首次出现的位置,顺序不变;只有选了排序方式才会重排。

能处理多少条数据?

单次上限 20 万字符,几千行的名单、关键词列表都没问题。全部在浏览器本地处理,不上传服务器。

中英文混合的列表可以吗?

可以。去重按字符精确匹配,排序时中英文按 Unicode 顺序混合排列;忽略大小写只影响英文字母。

怎么去除重复的手机号或邮箱?

把列表直接粘贴进来(每行一个或用逗号分隔),工具会按整行文本比对去重,并显示原始条数与删除数量。邮箱建议勾选「忽略大小写」,因为邮箱地址不区分大小写,ABC@x.com 与 abc@x.com 属于同一地址。

去重是按整行还是按某一列?

按整行文本去重。如果每行是「姓名, 电话」这样的复合内容,只要整行不完全相同就不会被删除。需要按某一列去重时,请先只保留该列再处理,或先把该列提取到独立的一行一条。

排序会不会影响去重结果?

不会。去重得到的是「保留首次出现、删除重复项」的集合,之后再排序只改变显示顺序,集合内容不变。若想确认删掉了哪些重复项,可先看去重后提示的删除数量,再决定是否保留原顺序。

Excel 里几万行数据能用吗?

可以。纯文本处理在浏览器本地完成,几万行通常很快;但界面渲染大量行会占用内存,建议处理完立即复制结果备用。数十万行以上的大表建议用 Excel 自带的「删除重复项」或命令行工具。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。