批处理sort命令详解

先来了解一下行的定义
计算机中,按下Enter(回车键)所产生的格或者符号,我们定义为行
以下是回车键的简单介绍:
回车键有两个作用,一是确认输入的执行命令,二是在文字处理中起换行的作用.

同理 按下tab产生的符号 我们叫做制表符
按下 space key 所产生的符号 叫做空格
正文

sort 字符串排序

sort 不键入任何参数 默认按字母顺序、以及数字顺序(a~z,0~9)开头的所有字符
以下为优先项

符号最前(键盘shift+数字符号顺位X:有错误)
数字次之(0~9)
大小写英文随机(a~z)
汉字最末(汉字拼音首字母的英文顺序a~z)

关于指定sort的分析字符 是以行为基础来进行的

sort /+n 指定从行的第几个字符开始排序

sort /+2 指定sort分析每行的第二个字符。并将其按照sort的默认排序规则来排序。

(这里的n可以是任意数字,也可以无限大,当指定n的数字超过每行字符的最大数值,则将文本直接倒叙,也就是将文本行直接颠倒>可输出/o)

sort /r 是将sort 默认下的排序规则颠倒过来
sort /r /+n 从文本行的第n个字符开始分析
即:
汉字在前(汉字拼音首字母的英文顺序z~a)
大小写英文随机(z~a)
数字次之(9~0)
符号为后(键盘shift+数字符号顺位颠倒 (此顺序有点问题(不按常理出牌)
(几次测试,发现这个家伙好像是随机的。。。)

特殊情况下的特殊效果

sort /+n ^/ sort /r /+n n的数值如果超出了文本行中字符的最小数,达不到要求的行将被sort抛弃,此中的顺序将按sort当前要求默认的排序规则来。


sort 自带了一个输出文本命令

sort 分析命令 将要分析的filename.txt /o filename2.txt 即可

利用重定向字符 ">" 也可以将sort 分析整理排序后的文档导入到其他文本中。

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

以下引用批处理之家"helloword123"对 /t 以及 /m 命令的简单分析

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是一本小说,用s

ort排序之后自然是“惨不忍睹”的,对于结果没有什么好说的,主要说说这行代码运行后产生的一些问题。

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

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

问题3.当我将/m指定的内存数500kb变为160kb(160kb是sort命令默认的最小内存)时,竟然提示“没有足够的内存,无法完成排序。”

由问题引出的简单思考:

既然是简单思考,自然不会分析的太过深入。

问题1.如果说/o比重定向符(>)快,而且有时用重定向符(>)还会出现“警告”,那么完全可以舍弃重定向符(>),只要想输出排序结果就用/o参数。

问题2.缓存文件产生的原因是指定了内存的大小,不指定就不会出现,也就是说“不用/m参数就不会出现缓存文件,而不用/m参数,/t参数也没用”。

问题3.不指定用于排序的内存大小,就不会提示“内存不足”,那么不用/m参数不就好了。


总结:sort的/m,/t参数完全可以不用。估计这两个参数,是为了dos时代而准备的,现在的电脑内存——我这台“老爷机”都有1G的内存,实在想不出为了区区几十M的文件分配内存有什么意义。

6./rec参数(指定sort能处理的最大行)

这里的“最大行”,不是说文本中有多少行,而是说一行中最多可以含有多少字符数。

sort命令默认的文本最大行含有4096个字符(2的12次幂),最多可以含有65535个字符。

这里设置了一个特殊的文本a.txt来加以说明。

a.txt中一共含有2行文本,每行文本含有4097个字符。

sort a.txt

输入记录超过最大长度。请指定更大的最大限度。

sort /rec 4097 a.txt

正确回显。


整理sort比较有用的命令
sort 首字母排序
sort /+n 指定行的第几个字符开始排序
sort /r 首字符颠倒排序
sort /r /+n
sort /n n的数值超出当前文本所有行字符中的最大数 文本行直接颠倒。
sort /n n的数值大于指定要分析的部分、行字符中的最小数 将放弃达不到要求的行,并按当前sort默认输出顺序列出。

相关文档
最新文档