sort
sort 是 Linux 中的基本实用程序,用于按升序或降序排列文件或标准输入的内容,逐行操作,并提供丰富的自定义选项。
sort [选项] [文件...]如果不指定文件,sort 会从标准输入读取数据 sort 默认按字典序升序排序
| 选项 | 说明 |
|---|---|
-n |
按数值大小排序(numeric),不带 -n 会按照字典序排序,即逐字符比较 Unicode/ASCII 编码值 |
-r |
反向排序(reverse),sort 默认升序排序,带上 -r 会降序排序 |
-u |
去重(unique),输出排序后的内容,同时移除重复行(相当于 `sort |
-k<列范围> |
按指定列排序(key),适用于多列的文本(默认以空格或制表符分隔) |
-t<分隔符> |
指定分隔符(delimiter),对于多列的文本,默认分隔符是空格或制表符,但可以用 -t 自定义 |
-o <filename> |
输出到文件(output),将排序结果直接写入文件 |
-T <dir> |
指定临时文件的存储目录。当排序数据量超出内存限制时,sort 会将中间结果写入临时文件进行归并排序。默认写入 /tmp,可用此选项指定其他目录(如更大或更快的磁盘) |
示例数据:
-- number.txt --5121001
-- data.txt --Alice 30Bob 25Carol 28
-- score.csv --Music,97English,98Math,1001. 按数值排序
sort -n number.txt不加
-n则按照字典序排序,结果是1 100 12 5加-n后按照数值排序,结果是1 5 12 100
2. 按指定列排序
sort -k2,2 -n data.txt按照第 2 列排序(起始列是 2,结束列也是 2) 如果写成
-k2,默认是从第 2 列开始一直到行尾,这在某些情况下排序会不准确
3. 指定分隔符分割列
sort -t, -k2 -n score.csvCSV 文件使用逗号分割列,可以用
-t指定,
4. 指定临时文件存储中间结果
sort -T /mnt/fastdisk largefile.txt -o sorted.txt临时文件将写到
/mnt/fastdisk/目录 输入文件是largefile.txt排序结果输出到sorted.txt
man sort- GNU Coreutils - sort