要排序的項目必須以某種方式分隔
只要每個元素都以某種方式分隔, 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運算符指定數字排序而不是字母。