需要一个免费的命令行实用程序根据特定位置的字段对大型平面文件(>10Mb)进行排序。
几年前,我在 OS/2 上使用过一个叫做 bigsort.exe 的东西,但我找不到类似的东西。
答案1
Windows 自带了一个排序实用程序:
C:\Documents and Settings\Administrator>sort /? SORT [/R] [/+n] [/M 千字节] [/L 区域设置] [/REC 记录字节] [[驱动器 1:][路径 1]文件名 1] [/T [驱动器 2:][路径 2]] [/O [驱动器3:][路径3]文件名3] /+n 指定要 开始每次比较。/+3 表示 每次比较都应从第 3 次开始 每行包含的字符数较少的行 比其它行先有 n 个字符排序。 默认情况下,比较从第一个开始 每行一个字符。 /L[OCALE] locale 使用以下选项覆盖系统默认区域设置: 指定的。“C”语言环境产生 最快的整理顺序是 目前唯一的选择。排序 始终不区分大小写。 /M[EMORY] 千字节指定要使用的主内存量 排序,以千字节为单位。内存大小为 始终限制在最低 160 千字节。如果指定了内存大小 用于排序的确切数量, 无论主内存有多少 可用的。 最佳表现通常是通过 不指定内存大小。默认情况下 排序将一次性完成(无临时 文件)如果它适合默认最大值 内存大小,否则将进行排序 在两次传递中(使用部分排序的数据 存储在临时文件中,例如 排序使用的内存量 和合并过程是相同的。默认 最大内存大小为可用主内存的 90% 如果输入和输出都是 文件,否则占用 45% 的主内存。 /REC[ORD_MAXIMUM] 字符指定最大字符数 在一条记录中(默认4096,最大65535)。 /R[EVERSE] 反转排序顺序;也就是说, 将 Z 排序到 A,然后将 9 排序到 0。 [drive1:][path1]filename1 指定要排序的文件。如果没有 指定后,标准输入就会进行排序。 指定输入文件比 将同一个文件重定向为标准输入。 /暂时的] [drive2:][path2] 指定要保存的目录的路径 排序的工作存储,以防数据 不适合主内存。默认值是 使用系统临时目录。 /输出] [drive3:][path3]filename3 指定排序后的输入所在的文件 存储。如果没有指定,则数据 写入标准输出。指定 输出文件比重定向更快 标准输出到同一个文件。
虽然移植版本(GNU Win32)更加灵活。
答案2
为了完整起见,赛格威包含排序以及常见的 GNU 命令行实用程序(还有更多)。
GNU Win32 排序应该类似,因为它们来自相同的来源(尽管在任何给定时间可能有不同的版本)。
答案3
与 Windows 附带的实用程序相比sort
,Powershell Sort-Object
CMDlet 功能更加强大、灵活,也更易于使用。