Linux排序命令的用法

要排序的項目必須以某種方式分隔

只要每個元素都以某種方式分隔, Linux文本文件中的數據就可以使用排序命令排序。 通常,逗號用作分隔信息的分隔符。

基本排序規則

排序命令重新排列文本文件中的行以按數字和字母順序對它們進行排序。 sort命令的默認規則是:

排序文本文件

為了對分隔的Linux文件中的行進行排序,可以使用sort 命令,如下所示:

$ sort -k2 test.txt

根據從第二列開始的字符(k2指第二列)對文件“test.txt”進行排序。 假設輸入文件的內容是:

1,Justin Timberlake,標題545,售價$ 7.30 2,Taylor Swift,標題723,售價$ 7.90 3,Mick Jagger,標題610,售價7.90美元4,Lady Gaga,標題118,售價$ 7.30 5,Johnny Cash,標題482,售價$ 6.50 6,Elvis Presley,標題335,售價$ 7.30 7,John Lennon,標題271,售價$ 7.90 8,Michael Jackson,標題373,售價$ 5.50

由於本示例中的第二列包含名和姓,排序後的輸出按第二列中每個人的名字的第一個字母排列 - Elvis,John,Johnny,Justin,Lady,Michael,Mick和Taylor , 如下所示:

6,Elvis Presley,標題335,售價$ 6.30 7,John Lennon,標題271,售價$ 7.90 5,Johnny Cash,標題482,售價$ 6.50 1,Justin Timberlake,標題545,售價$ 6.30 4,Lady Gaga,標題118,售價$ 6.30 8,邁克爾杰克遜,標題373,價格$ 5.50 3,Mick Jagger,標題610,價格$ 7.90 2,Taylor Swift,標題723,價格$ 7.90

如果使用-k3對文件進行排序(使用從第3列開始的行內容 - 標題編號列),則輸出為:

4,Lady Gaga,標題118,價格$ 6.30 7,John Lennon,標題271,價格$ 7.90 6,Elvis Presley,標題335,價格$ 6.30 8,Michael Jackson,標題373,售價$ 5.50 5,Johnny Cash,標題482,售價$ 6.50 1,Justin Timberlake,標題545,售價$ 6.30 3,Mick Jagger,標題610,價格$ 7.90 2,Taylor Swift,標題723,售價7.90美元

$ sort -k4 test.txt

產生按價格排序的列表:

8,Michael Jackson,標題373,價格$ 5.50 1,Justin Timberlake,標題545,售價$ 6.30 4,Lady Gaga,標題118,售價$ 6.30 6,Elvis Presley,標題335,售價$ 6.30 5,Johnny Cash,標題482,售價$ 6.50 2,Taylor Swift,Title 723,售價7.90美元3,Mick Jagger,標題610,售價7.90美元7,John Lennon,標題271,售價7.90美元

反轉排序

-r選項反轉排序。 例如,使用上面的結果:

$ sort -k4 -r test.txt

收益率:

價格$ 7.90 3,Mick Jagger,標題610,價格$ 7.90 2,Taylor Swift,標題723,價格$ 7.90 5,Johnny Cash,標題482,價格$ 6.50 6,Elvis Presley,標題335,價格$ 6.30 4,Lady Gaga,標題118,售價$ 6.30 1,Justin Timberlake,標題545,售價$ 6.30 8,Michael Jackson,標題373,售價$ 5.50

保存排序文件

排序文件不會保存它。 要將排序列表保存在文件中,請使用重定向運算符:

sort -k4 -r test.txt> test_new.txt

其中“test_new.txt”是新文件。

對流輸出進行排序

您還可以將sort命令應用於流的輸出,如管道運算符:

$ ls -al | sort -r -n -k5

這會按照文件大小對由ls命令生成的文件列表的輸出進行排序,從最大的文件開始。 -n運算符指定數字排序而不是字母。