sort 是什么
sort 是 CMD 的文本排序命令,能把文件内容或管道输出按行排序,支持从指定列开始比较(/+n)和逆序(/r),结果用 /o 写文件或用重定向保存。它的比较规则跟随系统的区域设置与代码页,因此中文排序结果不一定等于拼音顺序。默认按整行字符串比较,不做数值大小判断,数字清单排出来的顺序常常和直觉不同。
基本信息
| 适用平台 | Windows CMD |
|---|---|
| 语法 | sort [/r] [/+n] [/o 输出文件] [输入文件] |
| 开关 | /r 逆序、/+n 从第 n 列比较、/o 输出到文件 |
| 输入来源 | 文件参数,或管道如 netstat -ano | sort |
| 排序规则 | 字符串比较,受区域设置与代码页影响 |
典型使用场景
- 整理导出的机器名、人员名单,方便人工核对顺序
- 把 IP、端口清单排序后观察分布和重复项
- 对 netstat、tasklist 的管道输出排序,快速定位目标条目
- 两份清单比对之前先各自排序,便于逐行对照
- 生成有序的 hosts 或白名单片段,交给下游脚本
- 按列排序日志行,把同一来源的记录聚在一起
常用示例
常用示例
sort names.txt REM 整行升序,输出到屏幕
sort /r names.txt REM 逆序输出
sort /+20 hosts.txt REM 从第 20 列开始比较
sort /o sorted.txt names.txt REM 结果写文件,避免覆盖源文件
netstat -ano | findstr LISTENING | sort REM 管道排序
REM 复杂排序改用 PowerShell:
Import-Csv list.csv | Sort-Object Port -Descending开关与输出读法
| 开关或现象 | 含义 | 注意 |
|---|---|---|
| /+n | 从第 n 个字符开始比较 | 列偏移按字符数算,含空格 |
| /r | 逆序输出 | 只反转顺序,不改比较规则 |
| /o 文件 | 把结果写进指定文件 | 比用重定向符号更安全,不会误清源文件 |
| 中文排序结果 | 按当前代码页的字节序排 | 不是拼音序,需拼音序用 Sort-Object |
| 数字清单 | 按字符串比较 | 会得到 1、10、2 这类顺序 |
sort 会把整份输入读进内存再输出,超大文件建议先过滤再排序;需要按多列、按数值或按日期排序时,用 PowerShell 的 Sort-Object 并显式指定比较类型。
它不支持去重,重复行会照原样保留;去重可以用管道接 PowerShell 的 Sort-Object -Unique,或者按行导入后 Get-Unique。