在 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 軟體