1. 前言
linux中的sort命令用于對文本文件的內容進行排序。本教程向您展示了sort命令的一些基本示例。
Linux中的sort命令sort命令以有用的方式排列文本行。這個簡單的工具可以幫助您快速地從命令行對信息進行排序。
語法:
sort [options] <filename>
你應該注意幾件事:
當您使用沒有任何選項的排序時,將強制執行默認規則。它有助于理解默認規則以避免意外結果。在使用sort時,原始文件和數據是安全的。輸入的結果只顯示在命令行上。但是,也可以根據具體需求,將輸出結果指定保存為單獨的文件。稍后再詳細介紹。sort最初設計用于ASCII字符。我沒有對大量不同編碼進行測試,但是不同的編碼可能會產生意想不到的結果。
Linux中10大常用命令之sort使用案例
2. `sort`命令使用案例
sort命令使用案例
sort命令中的默認規則這些是使用sort命令時的默認規則。前幾個例子將說明如何管理這些優先級。然后,我們將查看特定選項。
- 數字 > 字母
- 小寫 > 大寫
2.1 `sort`命令使用規則
讓我向您展示一些排序命令的例子,您可以在各種情況下使用它們。
- 按字母順序排序
默認的排序命令可以方便地按字母順序查看信息。不需要任何選項,即使大小寫字母混合的情況下,A-Z排序也可以按預期工作。
我將使用一個名為filename.txt的示例文本文件,如果您查看該文件的內容,您將看到以下內容:
MX Linux
Manjaro
Mint
elementary
Ubuntu
sort filename.txt
以下是按字母順序排列的輸出結果:
elementary
Manjaro
Mint
MX Linux
Ubuntu
Linux使用sort命令對文本內容進行排序
2.2 按數值排序[選項-n]
讓我們使用上一個例子中使用的列表,并按數字順序排序。如果你想知道,根據distrowatch.com網站,該榜單反映了最受歡迎的Linux發行版(2019年7月)。
我將修改文件的內容,使項目編號,但順序如下所示。
1. MX Linux
4. elementary
2. Manjaro
5. Ubuntu
3. Mint
sort filename.txt
排序后得到:
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
看起來不錯。但是,您能依靠這種方法來準確地排列數據嗎?可能不會。讓我們看另一個例子來找出原因。
這是我的新建的演示文本:
1
5
10
3
5
2
60
23
432
21
現在,如果我使用sort命令沒有任何選項,這是我得到的:
sort order.txt
1
10
2
21
23
3
432
5
5
60
注意:數字僅按其開頭(第一個字符)的數字排序。
當您添加-n選項時,現在正在計算字符串的數值,而不僅僅是第一個字符?,F在,您可以在下面看到我們的列表得到了適當的排序。
sort order.txt -n
現在你將有正確排序的輸出結果:
1
2
3
5
5
10
21
23
60
432
2.3 反向排序[選項-r]
對于這個,我將再次使用我們的發行版列表。它將對任何內容進行反向排序。
sort filename.txt -r
反向排序
5. Ubuntu
4. elementary
3. Mint
2. Manjaro
1. MX Linux
2.4 隨機排序[選項-R]
如果您在嘗試反向排序參數時不小心按了shift鍵,您可能會得到一些奇怪的結果。-R按隨機順序重新排列輸出。
sort filename.txt -R
以下是隨機排列的結果:
4. elementary
1. MX Linux
2. Manjaro
5. Ubuntu
3. Mint
2.5 按月份排序[選項-M]
sort還內置了按月份排序的功能。它可以基于特定地區的信息識別多種格式。
下面是這個例子中的文本文件示例:
March
Feb
February
April
August
July
June
November
October
December
May
September
1
4
3
6
01/05/19
01/10/19
02/06/18
使用-M選項按月排序的輸出結果:
sort filename.txt -M
下面是輸出結果:
01/05/19
01/10/19
02/06/18
1
3
4
6
Jan
Feb
February
March
April
May
June
July
August
September
October
November
December
2.6 將排序后的結果保存到另一個文件中
如前所述,默認情況下sort不會更改原始文件。如果需要保存已排序的內容,可以這樣做。
對于本例,我創建了一個新文件,我希望打印已排序的信息并將其保存為filename_sort .txt。
注意:如果您試圖將排序后的數據定向到同一個文件,它將擦除文件的內容。
sort filename.txt -n > filename_sorted.txt
如果使用cat命令查看輸出文件,這將是它的內容:
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
2.7 排序特定列[選項-k]
如果文件中有一個表,可以使用-k選項指定要排序的列。我添加了一些任意數字作為第三列,并將顯示按每一列排序的輸出。我已經包括了幾個例子來展示各種可能的輸出。選項在列號后面添加。
1. MX Linux 100
2. Manjaro 400
3. Mint 300
4. elementary 500
5. Ubuntu 200
sort filename.txt -k 2
將文件中的第二列內容按字母順序:
4. elementary 500
2. Manjaro 400
3. Mint 300
1. MX Linux 100
5. Ubuntu 200
sort filename.txt -k 3n
這將根據第三列的數字對文本進行排序。
1. MX Linux 100
5. Ubuntu 200
3. Mint 300
2. Manjaro 400
4. elementary 500
sort filename.txt -k 3nr
與上面的命令相同,只是排序順序顛倒了。
4. elementary 500
2. Manjaro 400
3. Mint 300
5. Ubuntu 200
1. MX Linux 100
2.8 排序并刪除重復項[選項-u]
如果您有一個具有內容重復的文件,-u選項將使您的工作更輕松。請記住,排序不會對原始數據文件進行更改。我選擇創建一個新文件,其中只包含重復的項。在下面,您將看到命令運行后的輸入和每個文件的內容。
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
sort filename.txt -u > filename_duplicates.txt
這里是輸出文件排序和去重的結果。
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
2.9 排序時忽略大小寫[選項-f]
許多運行sort的現代發行版在默認情況下會實現忽略大小寫。如果沒有,添加-f選項將產生預期的結果。
sort filename.txt -f
下面是sort命令忽略大小寫的輸出:
alpha
alPHa
Alpha
ALpha
beta
Beta
BEta
BETA
2.10 按人類格式數值排序[選項-h]
這個選項允許比較字母數字值,比如1k(即1000)。
sort filename.txt -h
這是排序后的輸出:
10.0
100
1000.0
1k
3. 結論
我希望本教程能夠幫助您了解Linux中sort命令的基本用法。sort命令通常與Linux中的uniq命令結合使用,用于對文本文件進行唯一的排序。
如果你有一些更好的應用安全,請留言給大家分享吧。
本文已同步至博客站,尊重原創,轉載時請在正文中附帶以下鏈接:https://www.linuxrumen.com/cyml/1685.html
點擊了解更多,快速查看更多的技術文章列表