如何对大型文本文件中的行进行随机排序。
我正在使用 Emeditor Notepad++
如果有正则表达式的方法,也请添加它
示例行的一小部分:
0
1
3
4
5
6
7
8
9
10
A
a
B
b
C
c
D
d
E
e
需要结果:
E
8
e
5
a
c
9
B
1
0
b
7
3
4
A
d
C
D
10
6
答案1
总结
作为Notepad++ v7.9,Notepad++ 有一个功能叫随机化线路顺序其作用与下面给出的答案相同(即,随机化给定文档或选择中的行顺序)。
可以使用编辑 → 线操作 → 随机化线序。
原始答案
据我所知,这两个程序都没有原生的行随机化功能(更不用说使用正则表达式的程序了)。但是,两者都有可能通过插件支持这种功能。
不幸的是,我找不到任何针对 EmEditor 的预制解决方案,但有一个名为 Notepad++ 插件Python 脚本它支持另一个外部脚本,可以在 Notepad++ 内部对行进行基本随机化。
关于“大”文件标准,Notepad++ 可能会在处理较大的文件时出现问题(尽管打开大约 500MB 的文件肯定没有问题)。如果您确实遇到任何错误,您可能需要将文件拆分成较小的块。
Python 脚本插件和 RandomizeLines.py
首先,下载并安装Python 脚本通过 Notepad++ 插件管理器插件:
例如在 Notepad++ 插件管理器中安装 Python 脚本插件
插件安装完成后,您需要重新启动 Notepad++。重新启动后,插件应出现在插件→Python 脚本。
下一个,从 Github 下载这个基于 Python 的“npp-randomizelines”脚本(克隆或下载→下载 ZIP)提取文件并选择随机化线.py文件:
例如 RandomizeLines Master-已提取
复制随机化线.py你的记事本++→插件→Python 脚本→脚本文件夹。根据您的 Notepad++ 安装,该文件夹可能与显示的位置不同。
例如 RandomizeLines - Notepad++ 插件文件夹
重新启动 Notepad++,你现在应该有一个插件→Python 脚本→脚本→随机化线条选项。
例如运行 RandomizeLines 脚本
根据您的原始输入,运行脚本后我得到以下结果:
例如部分脚本结果
B
a
c
b
4
A
笔记
运行时,如果未选择任何行,它将随机化当前打开的文件的所有行。如果突出显示个别行,它将仅随机化这些行。
我还没玩过Python 脚本插件本身,但您可以使用 Python 的原生正则表达式模块来扩展脚本。关于语法,该插件显然使用了 Python 2.7 的 .dll 版本。
如果你想要一个类似的 EmEditor 脚本/插件,你可能需要用 C++ 自己编写代码。这似乎不是一个困难的任务(至少对于任何熟悉 C++ 和简单 Windows 编码的人来说都是如此),但它可能比向上面提到的 Notepad++ 脚本添加正则表达式更复杂。