sort
是一个用于排序文件内容的命令行工具,在 Linux 和 Unix 系统中非常常用。
基本用法
sort [OPTION]... [FILE]...
常用选项
- 按数值排序
-n
sort -n filename
例子:对包含数值的文件进行排序。
- 按字典顺序排序
-d
sort -d filename
例子:仅考虑字母和数字字符进行排序。
- 按月份排序
-M
sort -M filename
例子:对包含月份名称的文件进行排序。
- 忽略大小写
-f
sort -f filename
例子:忽略大小写进行排序。
- 逆序排序
-r
sort -r filename
例子:逆序排序。
- 指定分隔符
-t
sort -t',' -k2 filename
例子:使用逗号作为字段分隔符,并按第二个字段排序。
- 按指定键排序
-k
sort -k2 filename
例子:按第二个字段排序。
- 唯一排序
-u
sort -u filename
例子:去除重复行并排序。
示例文件
假设有一个文件 example.txt
,内容如下:
banana
apple
Orange
grape
pear
Lemon
按字母顺序排序
默认情况下,sort
按字母顺序排序:
sort example.txt
输出:
Lemon
Orange
apple
banana
grape
pear
按数值排序
假设有一个文件 numbers.txt
,内容如下:
10
2
33
21
5
按数值排序:
sort -n numbers.txt
输出:
2
5
10
21
33
忽略大小写排序
sort -f example.txt
输出:
apple
banana
grape
Lemon
Orange
pear
逆序排序
sort -r example.txt
输出:
pear
grape
banana
apple
Orange
Lemon
按字段排序
假设有一个文件 data.txt
,内容如下:
1,apple
2,banana
3,grape
4,pear
5,orange
按第二个字段排序(使用逗号作为分隔符):
sort -t',' -k2 data.txt
输出:
1,apple
2,banana
3,grape
5,orange
4,pear
唯一排序
假设有一个文件 duplicates.txt
,内容如下:
apple
banana
apple
orange
banana
去除重复行并排序:
sort -u duplicates.txt
输出:
apple
banana
orange
稳定排序
使用 -s
选项可以保证稳定排序,即保持原始相等元素的顺序。
sort -s -k1,1 data.txt
按指定字符范围排序
可以使用 -k
选项指定排序的起始和结束字符位置。例如,按每行的第2到第3个字符排序:
sort -k1.2,1.3 filename
综合示例
假设有一个更复杂的文件 complex.txt
,内容如下:
3,John,5000
1,Jane,7000
2,Bob,6000
4,Alice,5500
按第二个字段(名字)排序,然后按第三个字段(工资)排序:
sort -t',' -k2,2 -k3,3n complex.txt
输出:
4,Alice,5500
2,Bob,6000
1,Jane,7000
3,John,5000
排序带空格的字段
对于带有空格的字段,可以使用 -b
选项忽略前导空格进行排序:
sort -b -k2,2 filename
排序文件内容并保存到新文件
可以将排序结果重定向到新文件:
sort example.txt > sorted_example.txt