批处理命令教学之字符串排序(sort)

帮助信息:

SORT [/R] [/+n] [/M kilobytes] [/L locale] [/REC recordbytes]

  [[drive1:][path1]filename1] [/T [drive2:][path2]]

  [/O [drive3:][path3]filename3]

  /+n                         指定开始每个比较的字符号码 n。/+3 说明每个

                              比较应从每行的第三个字符开始。少于 n 个字符

                              的行排在其他行之前。按默认值,从每行的第一

                              个字符开始比较。

  /L[OCALE] locale            用指定的区域设置替代系统默认区域设置。

                              ""C"" 区域设置产生最快的排序顺序并且是当前

                              的唯一其他选择。排序总是不分大小写的。

  /M[EMORY] kilobytes         指定用于排序的主内存量,单位为 KB。

                              最小内存量总是 160 KB。如果指定内存大小,

                              无论主内存的可用量是多少,指定的内存量会

                              全部用于排序。

                              要取得最佳性能,通常不指定内存大小。按默认

                              值,如果达到默认最大内存值,排序会一次完成

                              (非临时文件);否则,排序会分两次完成(没有

                              完全排序的数据存储在临时文件中);用于排序

                              和合并的内存量相等。如果输入和输出都是文

                              件,默认最大内存量为可用主内存的 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>sort ip.txt

结果:

和ip.txt一摸一样,因为ip.txt中的单词第一个字符顺序都是按“a-z”排列的。

2.利用sort,按单词的第二个字符顺序排列

同样对ip.txt进行处理。

代码:

C:\Users\HELLOW~1\Desktop>sort /+2 ip.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节不难看出,其实sort ip.txt 的效果等同于 sort /+1 ip.txt。

3.倒序排列

既然可以123,自然可以321。sort命令也可以倒序排列并输出。

①.通常的倒序方法(按字母倒序)

代码:

sort /r ip.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 /+13 ip.txt

效果:

同第一种方法。

说明:

ip.txt中最长的单词是“refrigerator”,合计有12个字母,这里sort 比较第13个字母的大小,但是所有的单词都没有13个字母(最长的才12),此时按文本倒序排列。

所以只要你将/+n中,n的值设置的足够大,此时按文本倒序输出。

由于开篇的ip.txt内容没设置好,导致按字母倒序和按文本倒序产生了相同的结果,事实上这是两种完全不同的排序方法。按字母倒序是根据字母规则(a-z,0-9)进行倒序排列,按文本倒序是将最后一行文本作为第一行,第一行作为最后一行(简而言之就是文本行颠倒)。

例子(由Crlf版主友情提供):

test.bat:

@echo off

sort /r ip.txt

echo;

sort /+1000 ip.txt

pause

ip.txt:

123

abc

测试

@#¥

ABC

结果:

测试

abc

ABC

123

@#¥

ABC

@#¥

测试

abc

123

请按任意键继续. . .

以上是 批处理命令教学之字符串排序(sort) 的全部内容, 来源链接: utcz.com/z/350045.html

回到顶部