“sort” 命令是一個用於列印輸入文本文件的行並將所有文件串聯按排序順序的 Linux 程式。sort 命令以空格作為字段分隔符,並將整個輸入文件作為排序鍵。重要的是要注意,sort 命令實際上並不對文件進行排序,而只是在您重新導向輸出之前打印排序輸出。
本文旨在深入了解 Linux ‘sort’ 命令,並展示了 14 個有用的實際範例,向您展示如何在 Linux 中使用 sort 命令。
1. 創建具有指定內容的文本文件
首先,我們將創建一個名為 ‘tecmint.txt’ 的文本文件,該文件將用於在我們的工作目錄中執行 ‘sort’ 命令範例,此任務的工作目錄為 ‘/home/$USER/Desktop/tecmint’。
下面命令中的選項 ‘-e’ 啟用反斜杠的解釋,而 /n
告訴 echo 命令將每個字符串寫入新行。
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. 查看文件內容
在開始使用 ‘sort’ 命令之前,讓我們查看文件的內容以及使用以下 cat 命令顯示的外觀。
cat tecmint.txt
3. 排序檔案內容
使用命令“sort tecmint.txt”來重新排列檔案中的行,以按字母順序升序排列。如果有任何重複的行,它將保留每個唯一行的一個副本。
sort tecmint.txt
4. 將已排序的輸出重定向到新檔案
以下命令用於將文字檔案“tecmint.txt”的行按字母順序排序,然後將已排序的輸出重定向到名為“sorted.txt”的新檔案中。這意味著原始檔案保持不變,而排序的內容存儲在單獨的檔案中。
要驗證內容,請使用cat命令。
sort tecmint.txt > sorted.txt cat sorted.txt
5. 反向排序檔案內容
以下命令用於將文字檔案“tecmint.txt”的行進行反向排序,這意味著它將按字母順序降序排列行,並將已排序的輸出重定向到名為“reversesorted.txt”的新檔案中。
sort -r tecmint.txt > reversesorted.txt cat reversesorted.txt
6. 保存檔案和目錄列表
以下命令用於列出用戶家目錄(“/home/$USER“)的內容,使用ls命令以詳細的長格式顯示,然後將此目錄列表重定向到用戶桌面上的名為“lsl.txt”的文本文件,具體位於“tecmint”目錄中。
ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt cat lsl.txt
現在,我們將探索基於默認初始字符以外的字段對內容進行排序的示例。
7. 根據第二字段排序文件內容
以下命令用於根據文件“lsl.txt”中每行第二字段的值對內容進行排序。'-n'
選項表示數值排序,將第二字段視為數字而不是文本。
'-k2'
選項指定我們希望根據第二字段進行排序。執行此命令後,您將獲得“lsl.txt”中各行的一個排序列表,排序標準是每行第二字段的數值。
sort -nk2 lsl.txt
8. 根據第九字段排序文件內容
以下命令用於根據每行第九字段的值對文件“lsl.txt”中的行進行升序排序。'-k9'
選項指定排序應基於第九字段。
sort -k9 lsl.txt
9. 按文件大小排序文件
下列指令結合了’ls‘和’sort‘指令,以長列表格式列出用戶主目錄的內容,然後將目錄列表輸送到'sort -nk5'
,這會根據第五欄的值(代表文件大小)對列表進行排序。
ls -l /home/$USER | sort -nk5
10. 移除文件中的重複行
下列指令將文件“tecmint.txt”中的行按字母升序排序,並使用'-u'
選項移除任何重複行,該選項代表“唯一”,並確保在排序輸出中保留唯一的行。
$ cat tecmint.txt $ sort -u tecmint.txt
到目前為止的規則(我們觀察到的):
- 以數字開頭的行在列表中優先並位於頂部,除非另有指定(
-r
)。 - 以小寫字母開頭的行在列表中優先並位於頂部,除非另有指定(
-r
)。 - 內容根據字典中字母的出現順序列出,除非另有指定(
-r
)。 - Sort命令默認將每行視為字串,然後根據字典中字母的出現順序進行排序(數字優先;見規則 – 1),除非另有指定。
11. 將目錄列表重定向到文件
以下命令以長格式列出用戶主目錄的內容,包括隱藏的文件和目錄,然後將目錄列表重定向到用戶桌面上的“lsla.txt”文本文件,該文件位於“tecmint”目錄中。
ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt cat lsla.txt
熟悉ls命令的人明白,'ls -lA'
相當於'ls -l'
加上隱藏文件。因此,這兩個命令中的大部分內容將是相同的。
12. 排序文件內容
以下命令對兩個文本文件“lsl.txt”和“lsla.txt”的內容進行升序排序,然後將排序後的內容合併並在終端中顯示。
$ sort lsl.txt lsla.txt
注意文件和文件夾的重複。
13. 刪除文件中的重複行
以下命令合併並對兩個文本文件“lsl.txt”和“lsla.txt”的內容進行升序排序,同時使用'-u'
選項刪除任何重複行,該選項確保在排序輸出中保留唯一行。
$ sort -u lsl.txt lsla.txt
注意,輸出中省略了重複項。此外,您可以通過重定向將輸出保存到新文件。
14. 使用自訂分隔符排序多個欄位的輸出
以下命令結合了’ls‘和’sort‘命令,以長格式列出用戶主目錄的內容,然後將目錄列表傳遞給’sort‘命令,該命令根據特定列和字段對輸出進行排序。
ls -l /home/$USER | sort -t "," -nk2,5 -k9
以下是命令的分解:
-t ","
– 指定使用逗號(",")
作為字段分隔符。-nk2,5
– 指示按數值排序第2至第5列,通常代表權限和所有權詳細信息。-k9
– 進一步根據第9列(代表文件大小)對結果進行排序。
就這樣,下一篇文章中,我們將深入探討’更多sort命令的詳細示例‘。
請繼續分享、評論、點贊,並幫助我們觸及更廣泛的受眾。