批处理命令教学之字符串排序(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 请按任意键继续...