在 Linux 系統中,sort 是一個強大且常用的指令,用於對文本文件內容進行排序。無論您是在處理日誌文件、數據報表還是任何其他文本文件,sort 都能幫助您輕鬆地將其按照您想要的方式排列。本篇文章將為您深入介紹 sort 指令,並提供一些常見的使用範例,讓您能更好地掌握這個實用工具。




在 Linux 系統中,sort 是一個強大且常用的指令,用於對文本文件內容進行排序。無論您是在處理日誌文件、數據報表還是任何其他文本文件,sort 都能幫助您輕鬆地將其按照您想要的方式排列。本篇文章將為您深入介紹 sort 指令,並提供一些常見的使用範例,讓您能更好地掌握這個實用工具。

什麼是 sort 指令?

sort 指令是一個用於對文本文件進行排序的命令行工具。它可以按行對文件的內容進行排序,並根據不同的標準(如字母順序、數字大小等)來重新排列文件的內容。

基本用法

sort 指令的基本用法非常簡單。只需在終端中輸入以下命令即可對文件進行排序:

sort filename

常用選項

  • -r:以反向順序進行排序。
  • -n:按數字大小進行排序。
  • -f:忽略大小寫,進行排序。
  • -k:自定義排序鍵。
  • -b:如果資料的開頭有包含空白,可以加上 -b 參數忽略空白。

數字排序

如果您需要對包含數字的文件進行排序,可以使用 -n 選項。例如:

sort -n numbers.txt

反向排序

使用 -r 選項可以實現反向排序,即從最大值到最小值的排序。

sort -r data.txt

忽略大小寫

要在排序過程中忽略大小寫,可以使用 -f 選項。

sort -f names.txt

自定義排序鍵

使用 -k 選項,您可以指定要根據哪一列或字段進行排序。

sort -k 2 data.txt

批量處理文件

若要一次對多個文件進行排序,只需在命令中列出這些文件的名稱即可。

sort file1.txt file2.txt file3.txt

指定排序欄位

sort 預設會使用整行文字進行排序。如果每行文字資料中還包含許多欄位(例如逗號分隔的 CSV 檔),我們可以使用特定欄位作為排序依據。在指定欄位之前,必須先使用 -t 參數指定欄位的分隔字元(預設為空白或 tab),將欄位正確切開。接著使用 -k 參數指定欄位的編號。以下我們以逗號分隔欄位,並使用第二欄數字的資料作為排序的依據。

假設我們有一個名為 data.csv 的檔案,內容如下:

名稱,年齡,分數
Alice,25,90
Bob,22,78
Charlie,28,85
David,30,92
Eva,26,80

現在我們想根據第二個欄位的數字(年齡)進行排序,以下是兩個範例說明及輸出結果:

範例 1:依照數字進行排序

sort -t ',' -k 2 data.csv

輸出結果:

Bob,22,78
Alice,25,90
Eva,26,80
Charlie,28,85
David,30,92

現在我們想根據第二個欄位的數字(年齡)進行排序,以下是兩個範例說明及輸出結果:

範例 2:反向排序

sort -t ',' -k 2 -r data.csv

輸出結果:
David,30,92
Charlie,28,85
Eva,26,80
Alice,25,90
Bob,22,78

多欄位排序

在比較複雜的資料中,我們可能需要根據多個欄位進行排序。這時,我們可以使用多組 -k 參數來指定欄位,並加上每個欄位值的解析方式。

假設我們有一個名為 data.csv 的檔案,內容如下:

名稱,年齡,分數
Alice,25,90
Bob,22,78
Charlie,28,85
David,30,92
Eva,26,80

範例 1:根據年齡和分數進行排序

sort -t ',' -k 2,2 -k 3,3 data.csv

輸出結果:
Bob,22,78
Alice,25,90
Eva,26,80
Charlie,28,85
David,30,92

在這個例子中,我們使用兩組 -k 參數,分別指定了第二個欄位和第三個欄位,以實現按照年齡和分數進行排序。

範例 2:根據年齡和分數進行反向排序

sort -t ',' -k 2,2 -k 3,3n -r data.csv

輸出結果:
David,30,92
Charlie,28,85
Eva,26,80
Alice,25,90
Bob,22,78

在這個例子中,我們使用了 -r 參數來反向排序年齡,並且對分數使用了 -k 3,3n,以確保分數以數字的方式進行排序。

使用平行運算進行排序

如果您需要對非常大量的資料進行排序並希望加速計算速度,sort 指令提供了 --parallel 平行運算功能,讓您可以指定多個行程同時進行排序。以下是兩個範例說明,演示如何使用 --parallel 選項來平行排序巨量資料。

假設我們有一個名為 large.txt 的大型檔案需要進行排序,我們可以使用以下命令進行平行排序:

sort --parallel=4 large.txt

在這個例子中,我們使用了 --parallel=4,指定同時運行 4 個行程進行排序。

延伸閱讀:chmod 是什麼 ? 5分鐘學會 Linux 檔案權限設定

延伸閱讀:MobaXterm 教學比 Putty 更強大方便好操作的 Windows 免費 SSH Client 軟體

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *