sort

读取输入、对数据进行排序,并将结果写入屏幕、文件或其他设备。

语法

sort [/r] [/+<N>] [/m <kilobytes>] [/l <locale>] [/rec <characters>] [[<drive1>:][<path1>]<filename1>] [/t [<drive2>:][<path2>]] [/o [<drive3>:][<path3>]<filename3>]

参数

参数 说明
/r 逆向排序(即从 Z 到 A、从 9 到 0 排序)。
/+<N> 指定 sort 将开始进行每次比较的字符位置编号。 N 可为任何有效整数
/m <kilobytes> 指定要用于排序的主内存量(以 KB 为单位)。
/l <locale> 重写由系统默认区域设置(即在安装过程中选择的语言和国家/地区)定义的字符排序顺序。
/rec <characters> 指定一条记录或一行输入文件的字符数上限(默认值为 4,096,上限为 65,535)。
[<drive1>:][<path1>]<filename1> 指定要排序的文件。 如果未指定文件名,则对标准输入进行排序。 指定输入文件比将同一文件重定向为标准输入更快。
/t [<drive2>:][<path2>] 如果数据不适合放入主内存,则指定用于保存 sort 命令的工作存储的目录路径。 默认情况下,使用系统临时目录。
/o [<drive3>:][<path3>]<filename3> 指定用于存储已排序输入的文件。 如果未指定,数据将写入标准输出。 指定输出文件比将标准输出重定向到同一文件更快。
/unique 仅返回唯一结果。
/? 在命令提示符下显示帮助。

注解

  • 默认情况下,比较将从每行的第一个字符开始。 /+ 命令行选项从 N 指定的字符开始比较。例如 /+3 指示每个比较应从每行的第三个字符开始。 字符数低于 N 的行排在其他行之前

  • 使用的内存始终至少为 160 KB。 如果指定了内存大小,则无论有多少主内存可用,都会使用指定的确切大小进行排序(必须至少为 160 KB)。

  • 未指定大小时,如果输入和输出均为文件,则默认最大内存大小为可用主内存的 90%,否则为主内存的 45%。 该默认设置通常提供最佳性能。

  • 目前,默认区域设置的唯一替代方法是 C 区域设置,它比自然语言排序更快(它根据字符的二进制编码进行排序)。

  • 可使用管道符号 (|) 将输入数据从另一个命令定向到 sort 命令,或将已排序的输出定向到另一个命令。 可使用重定向符号(<>)指定输入文件和输出文件。 直接指定输入文件(如命令语法中 filename1 所定义),然后使用 /o 参数指定输出文件可能会更快、更高效(尤其是对于大型文件)

  • sort 命令不区分字母大小写,并且对文件大小没有限制

  • 排序程序使用与国家/地区代码和代码页设置相对应的合并排序表。 大于 ASCII 代码 127 的字符将根据 Country.sys 文件中的信息或由 Config.nt 文件中 country 命令指定的备用文件中的信息进行排序

  • 如果排序未超出最大内存大小(默认设置或由 /m 参数指定),则排序只执行一次。 如果超出,排序将分两次(即排序和合并)执行,并且这两次所用的内存量相等。 分两次执行时,部分排序的数据将存储在磁盘上的临时文件中。 如果内存不足以分两次执行排序,则会发出运行时错误。 如果使用 /m 命令行选项指定的内存高于实际可用内存,则可能会出现性能下降或运行时错误

示例

  • 要按逆序对 expenses.txt 文件中的行进行排序和显示,请键入以下内容

    sort /r expenses.txt
    
  • 要在大型文件 maillist.txt 中搜索文本 Jones,并使用管道 (|) 将 find 命令的输出定向到 sort 命令,请键入以下内容

    find Jones maillist.txt | sort
    

    该命令生成包含指定文本的行的已排序列表。

  • 要对键盘输入进行排序并在屏幕上按字母顺序显示结果,可以首先使用不含参数的 sort 命令,具体方法是键入以下内容

    sort
    

    然后键入要排序的文本,并在每行末尾按 Enter。 键入完文本后,按 Ctrl+Z,然后按 Enter。 sort 命令显示键入的文本,并按字母顺序排序