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 9sort是一个非常强大的工具,支持多种排序选项和模式,能够满足大多数文本排序的需求。
