Linux 的 sort 命令的七個有趣實例(二)
在我們繼續深入之前,先創建一個文本文檔『month.txt』,並且將上一次給出的數據填進去。
$ echo -e "marndecnoctnsepnfebnaug" > month.txt
$ cat month.txt

15、 通過使用』M『選項,對』month.txt『文件按照月份順序進行排序。
$ sort -M month.txt
注意:『sort』命令需要至少3個字元來確認月份名稱。

16、 把數據整理成方便人們閱讀的形式,比如1K、2M、3G、2T,這裡面的K、G、M、T代表千、兆、吉、梯。 (LCTT 譯註:此處命令有誤,ls 命令應該增加 -h 參數,徑改之)
$ ls -lh /home/$USER | sort -h -k5

17、 在上一篇文章中,我們在例子4中創建了一個名為『sorted.txt』的文件,在例子6中創建了一個『lsl.txt』。『sorted.txt'已經排好序了而』lsl.txt『還沒有。讓我們使用sort命令來檢查兩個文件是否已經排好序。
$ sort -c sorted.txt

如果它返回0,則表示文件已經排好序。
$ sort -c lsl.txt

報告無序。存在矛盾……
18、 如果文字之間的分隔符是空格,sort命令自動地將空格後的東西當做一個新文字單元,如果分隔符不是空格呢?
考慮這樣一個文本文件,裡面的內容可以由除了空格之外的任何符號分隔,比如『|』,『』,『+』,『.』等……
創建一個分隔符為+的文本文件。使用『cat『命令查看文件內容。
$ echo -e "21+linux+server+productionn11+debian+RedHat+CentOSn131+Apache+Mysql+PHPn7+Shell Scripting+python+perln111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt

現在基於由數字組成的第一個域來進行排序。
$ sort -t '+' -nk1 delimiter.txt

然後再基於非數字的第四個域排序。

如果分隔符是製表符,你需要在』+『的位置上用$』t』代替,如上例所示。
19、 對主用戶目錄下使用『ls -l』命令得到的結果基於第五列(『文件大小』)進行一個亂序排列。
$ ls -l /home/avi/ | sort -k5 -R

每一次你運行上面的腳本,你得到結果可能都不一樣,因為結果是隨機生成的。
正如我在上一篇文章中提到的規則2所說——sort命令會將以小寫字母開始的行排在大寫字母開始的行前面。看一下上一篇文章的例3,字元串『laptop』在『LAPTOP』前出現。
20、 如何覆蓋默認的排序優先權?在這之前我們需要先將環境變數LC_ALL的值設置為C。在命令行提示欄中運行下面的代碼。
$ export LC_ALL=C
然後以非默認優先權的方式對『tecmint.txt』文件重新排序。
$ sort tecmint.txt

覆蓋排序優先權
不要忘記與example 3中得到的輸出結果做比較,並且你可以使用『-f』,又叫『-ignore-case』(忽略大小寫)的選項來獲取更有序的輸出。
$ sort -f tecmint.txt

21、 給兩個輸入文件進行『sort『,然後把它們連接成一行!
我們創建兩個文本文檔』file1.txt『以及』file2.txt『,並用數據填充,如下所示,並用』cat『命令查看文件的內容。
$ echo -e 「5 Reliablen2 Fastn3 Securen1 open-sourcen4 customizable」 > file1.txt
$ cat file1.txt

用如下數據填充』file2.txt『。
$ echo -e 「3 RedHatn1 Debiann5 Ubuntun2 Kalin4 Fedora」 > file2.txt
$ cat file2.txt

現在我們對兩個文件進行排序並連接。
$ join <(sort -n file1.txt) <(sort file2.txt)

我所要講的全部內容就在這裡了,希望與各位保持聯繫,也希望各位經常來逛逛。有反饋就在下面評論吧。
via: http://www.tecmint.com/linux-sort-command-examples/
作者:Avishek Kumar 譯者:DongShuaike 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

















