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