批处理命令教学之字符串排序(sort)
帮助信息:
SORT[/R][/+n][/Mkilobytes][/Llocale][/RECrecordbytes] [[drive1:][path1]filename1][/T[drive2:][path2]] [/O[drive3:][path3]filename3] /+n 指定开始每个比较的字符号码n。/+3说明每个 比较应从每行的第三个字符开始。少于n个字符 的行排在其他行之前。按默认值,从每行的第一 个字符开始比较。 /L[OCALE]locale 用指定的区域设置替代系统默认区域设置。 ""C""区域设置产生最快的排序顺序并且是当前 的唯一其他选择。排序总是不分大小写的。 /M[EMORY]kilobytes 指定用于排序的主内存量,单位为KB。 最小内存量总是160KB。如果指定内存大小, 无论主内存的可用量是多少,指定的内存量会 全部用于排序。 要取得最佳性能,通常不指定内存大小。按默认 值,如果达到默认最大内存值,排序会一次完成 (非临时文件);否则,排序会分两次完成(没有 完全排序的数据存储在临时文件中);用于排序 和合并的内存量相等。如果输入和输出都是文 件,默认最大内存量为可用主内存的90%; 否则,为主内存的45%。 /REC[ORD_MAXIMUM]characters指定记录中的最大字符数量 (默认值为4096,最大值为65535)。 /R[EVERSE] 颠倒排序顺序,即,从Z到A,再从9到0。 [drive1:][path1]filename1 指定要排序的文件。如果没有指定,则排序标准 输入。指定输入文件比将同一个文件重定向为标 准输入快。 /T[EMPORARY] [drive2:][path2] 指定保留排序工作存储的目录路径,以防主内 存无法容纳数据。默认值是使用系统临时目录。 /O[UTPUT] [drive3:][path3]filename3指定在哪个文件中储存经过排序的输入。 如果没有指定,数据会被写入标准输出。指定 输出文件比将标准输出重定向到同一个文件快。
命令概括:
sort,意为“以……排序”。
/r,全英文reverse,意为“颠倒”。
/+n,还是number,意为“数字”。
/m,全英文memory,意为“内存”。
/l,全英文locale,意为“场所”,引申为“区域设置”。
/rec,全英文record,意为“记录”。
/t,全英文temporary,意为“临时的”。
/o,全英文output,意为“输出”。
参数详解:
1.不带任何参数的sort命令
不带任何参数的sort命令,比较第一个字符的大小(字母不区分大小写),按“顺序排列”输出(a-z,0-9)。
例如:
ip.txt
apple believe change desktop everything flight ground hello ignore joke knowledge little memory normal outside Police quickly refrigerator smell technology until violin water xenophobia yellow zero
利用sort进行排序。
代码:
C:\Users\HELLOW~1\Desktop>sortip.txt
结果:
和ip.txt一摸一样,因为ip.txt中的单词第一个字符顺序都是按“a-z”排列的。
2.利用sort,按单词的第二个字符顺序排列
同样对ip.txt进行处理。
代码:
C:\Users\HELLOW~1\Desktop>sort/+2ip.txt
效果:
water technology refrigerator believe hello yellow memory xenophobia zero desktop ignore change violin little flight smell knowledge until joke Police normal apple ground quickly outside everything
这一次的排序是按照第二个字符的“顺序排列”(a-z)进行排列的。
结合1、2节不难看出,其实sortip.txt的效果等同于sort/+1ip.txt。
3.倒序排列
既然可以123,自然可以321。sort命令也可以倒序排列并输出。
①.通常的倒序方法(按字母倒序)
代码:
sort/rip.txt
效果:
zero yellow xenophobia water violin until technology smell refrigerator quickly Police outside normal memory little knowledge joke ignore hello ground flight everything desktop change believe apple
②.特殊的倒序方法(按文本倒序,由Crlf版主友情提供)
代码:
sort/+13ip.txt
效果:
同第一种方法。
说明:
ip.txt中最长的单词是“refrigerator”,合计有12个字母,这里sort比较第13个字母的大小,但是所有的单词都没有13个字母(最长的才12),此时按文本倒序排列。
所以只要你将/+n中,n的值设置的足够大,此时按文本倒序输出。
由于开篇的ip.txt内容没设置好,导致按字母倒序和按文本倒序产生了相同的结果,事实上这是两种完全不同的排序方法。按字母倒序是根据字母规则(a-z,0-9)进行倒序排列,按文本倒序是将最后一行文本作为第一行,第一行作为最后一行(简而言之就是文本行颠倒)。
例子(由Crlf版主友情提供):
test.bat:
@echooff sort/rip.txt echo; sort/+1000ip.txt pause
ip.txt:
123 abc 测试 @#¥ ABC
结果:
测试 abc ABC 123 @#¥
ABC @#¥ 测试 abc 123 请按任意键继续...