文本行工具

在线去除重复行、按字母或数字排序、反转、随机打乱、去除空白行。免费在线工具,在浏览器中处理。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
按原顺序保留每个完全相同行的首次出现。大小写或首尾空白不同会视为不同行。
按浏览器默认区域规则进行文本升序排列,因此 10 排在 9 前。按行首数字比较请用「数值排序」。
按浏览器默认区域规则进行文本降序排列。混合大小写、带重音字母的顺序可能因设备而异。
用 parseFloat 读取行首数字:10px 为 10,1,000 为 1,1e3 为 1000。支持负数和小数。无法读取数字的行按字母升序排在末尾。
反转输入行的排列顺序,空行也保留在结果中。
把输入行随机打乱。每次点击都从输入重新处理,也可能得到相同顺序。
删除每行开头和结尾的空白,保留行内空白及空行。
删除空行及只含空白的行;保留行的原始文字,包括首尾空白。
每行输入一个条目。编辑只更新行数;点击操作按钮才生成输出。每个操作都读取「输入行」,连续处理时先把「输出」复制回「输入行」。
复制完整输出。继续处理这份结果时,先把它粘贴回「输入行」。复制失败时,请选中输出后手动复制。
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

操作示例

去除列表中的重复项

输入:

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.txt1,000、0x10、1e3 的处理规则不同
反转tac file.txt(GNU)/ tail -r file.txt(macOS)结果相同
删除空行sed '/^[[:space:]]*$/d' file.txt结果相同
去除每行首尾空白sed 's/^[[:space:]]*//;s/[[:space:]]*$//' file.txtASCII 空白结果相同

限制

  • 没有忽略大小写的模式。需要时先用大小写转换工具转成小写。
  • 按换行符分行;粘贴的 Windows 换行会被浏览器文本框统一成换行符。
  • 字母顺序取决于浏览器的语言设置,带重音或大小写混合的行在不同电脑上可能排得不一样。
  • 没有设置行数上限,上限取决于浏览器内存。

FAQ

去重是如何工作的?

逐行精确比较(区分大小写)。保留每个唯一行的首次出现,后续重复行被移除,同时保持首次出现的原始顺序。

比较是否区分大小写?

是的。'Apple' 和 'apple' 被视为不同的行。如需不区分大小写比较,请先使用我们的文本大小写转换工具将文本转为小写。

数值排序如何工作?

每行用 JavaScript 的 parseFloat 读取开头的数字(10px 读成 10,1,000 读成 1,0x10 读成 0)。开头没有数字的行按字母顺序排到末尾。

有行数限制吗?

没有设置上限。处理在浏览器中完成,上限取决于浏览器内存。

数据会发送到服务器吗?

不会。每个按钮都在浏览器标签页里处理文本,工具也不把文本存进浏览器的存储。页面统计只记录工具名和你点的按钮(如 deduplicate、sort_asc),不含文本内容。