一行一条数据, 去掉重复的行, 并单独列出被重复的内容. "原数据 N 条 / 去重之后 M 条"直接给出数量差, 适合快速统计一批 ID, 手机号, 行政区划码里到底重复了什么.
输入: 输出(去重结果, 3 条):
1001 1001
1002 1002
1001 1003
1003
重复数据(1 条):
1001IN (...). 下面几条是按接口实际行为验证过的, 理解它们能避免"条数对不上"的困惑:
" b " 和 "b" 算重复, 输出的是去掉空白的 b; A 和 a 是两条不同数据; IN (...) 之前先去掉重复值, 减少参数个数; 先看"原数据 N 条"是不是比你粘贴的行数多 1 -- 那是末尾换行产生的空行. 若差异更大, 多半是空白行或行内空格: 中间的空格不会被去掉("1 001" 与 "1001" 视为不同), 只有首尾空格会被忽略.
不能, 这里只按整行文本比对. 要在 CSV 的某一列上去重, 先把那一列单独取出来(Excel 分列, awk -F, '{print $2}' file | sort -u), 再粘进来.
去重在服务端完成, 几行到几万行都能跑, 但要注意两点: 一是这个页面是"输入即请求", 边打字会边发请求, 大数据量建议一次粘完而不是手打; 二是浏览器渲染几万行结果本身会比较慢. 真正的海量去重还是该用 SQL 的 SELECT DISTINCT col 或 GROUP BY col, 或者终端 sort -u.
思路一致但作用域不同: DISTINCT 是对查询结果的整行去重, 且由数据库优化器处理; 本工具是纯文本行去重, 还会额外把重复项列出来 -- 这一点比 DISTINCT 方便, SQL 里要查出"哪些值重复了"得额外写 GROUP BY ... HAVING COUNT(*)>1.
会, 去重在服务端接口完成, 你粘贴的内容作为请求参数发送过去, 只用于这一次处理, 页面没有账号体系, 也不会把结果展示给其他访问者. 身份证, 手机号, 银行卡号等敏感名单请先脱敏.