文本行工具
在线去除重复行、按字母或数字排序、反转、随机打乱、去除空白行。免费在线工具,在浏览器中处理。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
操作示例
去除列表中的重复项
输入:
apple
banana
cherry
apple
banana
date
点击去除重复后:
apple
banana
cherry
date
数值排序
输入:
100 items
3 items
42 items
7 items
点击数值排序后:
3 items
7 items
42 items
100 items
组合操作
可以组合多步操作:先去除首尾空格清理空白,再去除重复,最后 A→Z 排序。每个按钮都读取输入框,所以步骤之间要把输出复制回输入。
常见用途
文本行工具适用于清理数据导出、去重邮箱列表、排序日志条目、 准备词表、清理 CSV 列以及任何需要逐行操作文本的场景。
各按钮的规则
每个按钮都读取输入框、写入输出框,输入内容不会被改动。要连续做几步(先去空格、再去重、再排序),每一步之间把输出复制回输入。
| 按钮 | 规则 |
|---|---|
| 去除重复 | 按原顺序保留每行第一次出现的位置。必须完全相同才算重复,大小写和空格都算。结果与 awk '!seen[$0]++' 相同 |
| A→Z / Z→A 排序 | String.prototype.localeCompare,使用浏览器默认语言 |
| 数值排序 | 用 parseFloat 读取每行;读不出数字的行排到最后,按 A→Z 排 |
| 反转 | 行顺序倒过来 |
| 随机排序 | 随机顺序(每次点击结果不同) |
| 去除首尾空格 | 删掉每行首尾的空白 |
| 删除空行 | 删除空行和只含空白的行 |
示例:混合列表的排序与去重
输入(最后一行末尾有一个空格):
banana
Apple
apple
Cherry
_x
10
9
éclair
Zebra
apple
apple
A→Z 排序(浏览器语言为英文时):
_x
10
9
apple
apple
Apple
apple
banana
Cherry
éclair
Zebra
顺序按语言规则而不是字节值:大小写字母挨在一起,é 排在 e 旁边,10 排在 9 前面,因为比较的是字符而不是数值。命令行 LC_ALL=C sort 则按字节排序:
10
9
Apple
Cherry
Zebra
_x
apple
apple
apple
banana
éclair
对同一输入点去除重复,会删掉一个 apple,而 apple (末尾有空格)被当成另一行保留:
banana
Apple
apple
Cherry
_x
10
9
éclair
Zebra
apple
如果末尾空格不该算差异,先点去除首尾空格,把结果复制回输入,再点去除重复。
示例:数值排序怎么读数
1,000
v2
-3
1e3
10px
3
0x10
4
排序后:
-3
0x10
1,000
3
4
10px
1e3
v2
parseFloat 读取开头的数字,遇到不能识别的字符就停:0x10 读成 0,1,000 读成 1,10px 读成 10,1e3 读成 1000。 4 保留开头的空格。v2 不以数字开头,排到最后。
示例:中文姓名的排序取决于浏览器语言
「A→Z 排序」用浏览器的默认语言比较文字,同一份名单在中文和英文浏览器里排得不一样。输入:
张伟
李娜
王芳
刘洋
陈静
Zhou Jie
浏览器语言为中文时,结果按拼音 chen、li、liu、wang、zhang 排列,拉丁字母开头的 Zhou Jie 排在所有汉字之后:
陈静
李娜
刘洋
王芳
张伟
Zhou Jie
浏览器语言为英文时,Zhou Jie 排在最前,汉字按 Unicode 码位排(刘 U+5218、张 U+5F20、李 U+674E、王 U+738B、陈 U+9648),不再是拼音顺序:
Zhou Jie
刘洋
张伟
李娜
王芳
陈静
所以要按拼音排序名单,请在语言设置为中文的浏览器里操作。另外,排序规则对每个汉字只用一个读音,不会按姓氏的读音区分。例如中文浏览器里:
曾静
陈晨
单磊
沙丽
赵敏
姓「曾」读 zēng、「单」读 shàn,结果却把「曾」排在「陈」前面、把「单」排在「沙」前面,按的是 céng、dān 这两个读音。名单排完后,多音字的姓要人工核对。
示例:中文输入法打出的全角数字
中文输入法在全角模式下打出的数字(如 3、10)不是半角数字,parseFloat 读不出来。下面是一份楼号清单,其中两行是全角数字:
12号楼
3号楼
7号楼
10号楼
2号楼
点数值排序后:
2号楼
7号楼
12号楼
10号楼
3号楼
半角的三行按数值排好,全角的两行被当作「开头没有数字」放到最后,再按文字顺序排,所以 10号楼 在 3号楼 前面。把全角数字改成半角后再排序,五行才会按 2、3、7、10、12 排列。
对应的命令行
| 操作 | Shell | 与本工具的差别 |
|---|---|---|
| 去重并保留顺序 | awk '!seen[$0]++' file.txt | 结果相同 |
| 去掉相邻重复行 | sort file.txt | uniq | 输出会被排序 |
| 排序 | sort file.txt | 按 LC_COLLATE 排序;LC_ALL=C 为字节序 |
| 按数字排序 | sort -n file.txt | 1,000、0x10、1e3 的处理规则不同 |
| 反转 | tac file.txt(GNU)/ tail -r file.txt(macOS) | 结果相同 |
| 删除空行 | sed '/^[[:space:]]*$/d' file.txt | 结果相同 |
| 去除每行首尾空白 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' file.txt | ASCII 空白结果相同 |
限制
- 没有忽略大小写的模式。需要时先用大小写转换工具转成小写。
- 按换行符分行;粘贴的 Windows 换行会被浏览器文本框统一成换行符。
- 字母顺序取决于浏览器的语言设置,带重音或大小写混合的行在不同电脑上可能排得不一样。
- 没有设置行数上限,上限取决于浏览器内存。
FAQ
去重是如何工作的?
逐行精确比较(区分大小写)。保留每个唯一行的首次出现,后续重复行被移除,同时保持首次出现的原始顺序。
比较是否区分大小写?
是的。'Apple' 和 'apple' 被视为不同的行。如需不区分大小写比较,请先使用我们的文本大小写转换工具将文本转为小写。
数值排序如何工作?
每行用 JavaScript 的 parseFloat 读取开头的数字(10px 读成 10,1,000 读成 1,0x10 读成 0)。开头没有数字的行按字母顺序排到末尾。
有行数限制吗?
没有设置上限。处理在浏览器中完成,上限取决于浏览器内存。
数据会发送到服务器吗?
不会。每个按钮都在浏览器标签页里处理文本,工具也不把文本存进浏览器的存储。页面统计只记录工具名和你点的按钮(如 deduplicate、sort_asc),不含文本内容。