在上一篇文章裡,我們已經探討了關於sort命令的多個例子,如果你錯過了這篇文章,可以點擊下面的連結進行閱讀。今天的這篇文章作為上一篇文章的繼續,將討論關於sort命令的剩餘用法,與上一篇一起作為Linux 『sort』命令的完整指南。
在我們繼續深入之前,先創建一個文本文檔『month.txt』,並且將上一次給出的數據填進去。
$ echo -e "mar\ndec\noct\nsep\nfeb\naug" > 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+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+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』前出現。
via: http://www.tecmint.com/linux-sort-command-examples/
作者:Avishek Kumar 譯者:DongShuaike 校對:wxy
本文由 LCTT 原創翻譯,Linux中國 榮譽推出