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

2019-09-19 06:40:33王振洲

所以只要你将/+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
请按任意键继续. . .

4.将排序结果输出到文件

①.利用重定向符,将排序结果输出到文件
代码:


sort ip.txt>hello1.txt

效果:
在当前文件夹中生成hello1.txt,内容为:


@#¥
123
abc
ABC
测试

②.利用sort的/o参数,将排序结果输出到文件
代码:


sort ip.txt /o hello2.txt

效果:
在当前文件夹中生成hello2.txt,内容同hello1.txt。

两者的差别:

根据微软的机器翻译“指定输出文件比将同一文件作为标准输出重定向速度快”,也就是说/o参数比重定向符(>)快,这个不好实际测试,有这么个映象就可以了。

5.对/m,/t参数的一些说明

/m参数是用来指定参与排序的内存,换句话说就是“你分多少内存(单位kb)给sort命令排序”。

/t参数是用来指定缓存文件的目录,举个例子来说,我要处理8m的大文本,指定内存为500kb,500kb怎么装得下8m的文件?这时怎么办呢?——(按1m=1000kb算)先将500kb装入内存,再将剩下的7500kb分15次装入内存,缓存文件放在/t指定的目录中。

例如:

16.txt是一个8m的文本(要做测试的同学,可以到网上下本小说)。
代码:


>22.txt sort 16.txt  /m 500 /t C:dcache

说明:
16.txt是一本小说,用sort排序之后自然是“惨不忍睹”的,对于结果没有什么好说的,主要说说这行代码运行后产生的一些问题。

问题1.运行代码后,提出警告信息“警告: 做大量排序时使用重定向输出通常比直接指定输出文件名称来排序慢。”——这个前面说过了“/o参数比重定向符(>)快”。

问题2.运行代码后,在目录C:dcache中产生了一个以“srt”+16进制随机数命名的.tmp文件,出现过几秒,后被系统删除(没用/t参数指定的目录时,默认缓存文件目录是%temp%)。

相关文章 大家在看