sort
是一个在 Unix 和类 Unix 系统(如 Linux 和 macOS)中广泛使用的命令行工具,用于对文本文件中的行进行排序。它非常灵活,支持多种排序选项,如按数值、字典顺序排序,以及逆序排序等。
基本用法
sort [选项] [文件...]
如果没有指定文件,sort
会从标准输入读取数据。
常用选项
-n
:按数值排序,而非默认的字典序。-r
:逆序排序。-t
:指定字段分隔符,默认为空白字符(空格或制表符)。-k
:指定排序的字段,配合-t
使用。例如,-k2,2
表示仅根据第二个字段排序。-u
:去重,仅输出排序后的唯一行。-o
:将排序后的结果输出到指定文件,而不是标准输出。
示例
-
基本排序
假设有一个名为
numbers.txt
的文件,内容如下:3 1 4 1 5 9 2 6
使用
sort
排序:sort numbers.txt
输出:
1 1 2 3 4 5 6 9
-
按数值排序
为了按数值而非字典序排序,使用
-n
选项:sort -n numbers.txt
输出:
1 1 2 3 4 5 6 9
注意,尽管这里的结果看起来与未使用
-n
时相同,但在处理包含前导零的数字或更复杂的数字格式时,差异会显现出来。 -
逆序排序
使用
-r
选项进行逆序排序:sort -nr numbers.txt
输出:
9 6 5 4 3 2 1 1
-
基于字段排序
假设有一个名为
people.txt
的文件,内容如下(使用逗号作为分隔符):John,30 Jane,25 Doe,35 Smith,20
按年龄(第二个字段)排序:
sort -t, -k2,2 people.txt
输出:
Smith,20 Jane,25 John,30 Doe,35
-
去重并排序
去除重复行并排序:
sort -u numbers.txt
输出:
1 2 3 4 5 6 9
sort
是一个非常强大的工具,支持多种排序选项和模式,能够满足大多数文本排序的需求。