5 個有趣的 Linux ‘sort’ 命令示例


如果您是 Linux 使用者,您可能熟悉命令列介面 (CLI)。CLI 提供強大的工具,可以快速有效地執行復雜任務。“sort”命令是最有用的 CLI 工具之一。“sort”命令允許您按字母或數字順序排序文字行,並且它提供各種選項,可以使您的生活更輕鬆。在本文中,我們將探討五個有趣的 Linux “sort” 命令示例。

按數值排序

“sort”命令可用於按數字順序排序資料。在處理包含數值的資料集時,這非常有用。要按數值排序,請使用“-n”選項。這是一個示例:

$ cat numbers.txt
10
2
30
4
20

$ sort -n numbers.txt
2
4
10
20
30

在這個示例中,“sort”命令使用“-n”選項按數字順序排序“numbers.txt”檔案。

反向排序

有時,您可能希望反向排序資料。例如,您可能希望按日期和時間排序檔案列表,從最新的檔案開始。要反向排序,請使用“-r”選項。這是一個示例:

$ ls -l
total 0
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt
-rw-r--r-- 1 user user 0 Mar 23 14:14 file2.txt
-rw-r--r-- 1 user user 0 Mar 23 14:13 file3.txt

$ ls -l | sort -r
total 0
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt
-rw-r--r-- 1 user user 0 Mar 23 14:14 file2.txt
-rw-r--r-- 1 user user 0 Mar 23 14:13 file3.txt

在這個示例中,“ls -l”命令列出當前目錄中的檔案,“sort -r”命令反向排序列表。

按列排序

“sort”命令還可以按特定列排序資料。在處理具有多列資料的資料集時,這非常有用。要按特定列排序,請使用“-k”選項。這是一個示例:

$ cat names.txt
John Smith,25
Mary Johnson,30
Bob Jones,20
Tom Davis,35

$ sort -t ',' -k 2 names.txt
Bob Jones,20
John Smith,25
Mary Johnson,30
Tom Davis,35

在這個示例中,“names.txt”檔案包含兩列資料,用逗號分隔。“sort”命令使用“-t”選項指定欄位分隔符(逗號),並使用“-k 2”選項按第二列(年齡列)排序。

按唯一值排序

“sort”命令還可以從資料集中刪除重複的行。為此,請使用“-u”選項。這是一個示例:

$ cat fruits.txt
apple
orange
banana
orange
apple

$ sort -u fruits.txt
apple
banana
orange

在這個示例中,“sort”命令使用“-u”選項從“fruits.txt”檔案中刪除重複的行。

排序和合並檔案

“sort”命令還可以將多個已排序的檔案合併到一個已排序的檔案中。在處理已拆分為多個檔案的大型資料集時,這非常有用。要合併檔案,請使用“-m”選項。這是一個示例:

$ cat file1.txt
1
3
5

$ cat file2.txt
2
4
6

$ sort -m file1.txt file2.txt
1
2
3
4
5
6

在這個示例中,“sort”命令使用“-m”選項將“file1.txt”和“file2.txt”檔案合併到一個已排序的檔案中。

忽略前導字元進行排序

有時,資料集可能包含在排序時不需要考慮的前導字元。例如,您可能有一個以日期戳開始的檔名列表,並且您只想按檔名排序。要忽略前導字元,請使用“-b”選項。這是一個示例:

$ ls
2023-03-22_file1.txt
2023-03-23_file3.txt
2023-03-21_file2.txt

$ ls | sort -b -t '_' -k 2
2023-03-22_file1.txt
2023-03-21_file2.txt
2023-03-23_file3.txt

在這個示例中,“ls”命令列出當前目錄中的檔案。“sort”命令使用“-b”選項忽略前導空格,並使用“-t”選項指定欄位分隔符(下劃線)。“-k 2”選項按第二欄位(檔名)排序,同時忽略前導日期戳。

按人類可讀的大小排序

如果您正在處理檔案或目錄,您可能希望按大小對其進行排序。但是,按位元組大小排序可能難以閱讀和比較。要按人類可讀的大小(例如 KB、MB、GB)排序,請使用“-h”選項。這是一個示例:

$ du -h
10M     file1.txt
100K    file2.txt
1G      file3.txt

$ du -h | sort -h
100K    file2.txt
10M     file1.txt
1G      file3.txt

在這個示例中,“du”命令使用“-h”選項以人類可讀的格式顯示當前目錄中檔案的磁碟使用情況。“sort”命令使用“-h”選項按人類可讀的格式對檔案大小進行排序。

按日期和時間排序

如果您正在處理檔案,您可能希望按日期和時間對其進行排序。要按日期和時間排序,請使用“-t”選項指定欄位分隔符,並使用“-k”選項按日期和時間列排序。這是一個示例:

$ ls -l
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt
-rw-r--r-- 1 user user 0 Mar 22 13:45 file2.txt
-rw-r--r-- 1 user user 0 Mar 21 12:30 file3.txt

$ ls -l | sort -t ' ' -k 6,7
-rw-r--r-- 1 user user 0 Mar 21 12:30 file3.txt
-rw-r--r-- 1 user user 0 Mar 22 13:45 file2.txt
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt

在這個示例中,“ls -l”命令列出當前目錄中的檔案及其修改日期和時間。“sort”命令使用“-t”選項指定欄位分隔符(空格),並使用“-k 6,7”選項按日期和時間列排序。

按隨機順序排序

最後,您還可以按隨機順序排序資料。這在測試或生成隨機資料時可能很有用。要按隨機順序排序,請使用“-R”選項。這是一個示例:

$ cat names.txt
John
Mary
Bob
Tom

$ sort -R

在這個示例中,“sort”命令使用“-R”選項按隨機順序排序“names.txt”檔案中的名稱。這對於生成隨機測試資料或隨機排列列表很有用。

結論

“sort”命令是用於在 Linux 命令列上排序和處理資料的強大工具。在本文中,我們探討了五個有趣的“sort”命令示例,包括按數值排序、反向排序、按列排序、按唯一值排序以及合併已排序的檔案。這些示例應該可以為您在自己的 Linux 命令列工作流程中使用“sort”命令提供一個良好的起點。排序愉快!

更新於:2023年4月11日

194 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告