【Linux】排序命令sort


  很多時候,我們都會去計算一次數據里頭的相同型態的數據總數,舉例來說, 使用 last 可以查得這個月份有登陸主機者的身份。那么我可以針對每個使用者查出他們的總登陸次數嗎? 此時就得要排序與計算之類的命令來輔助了!底下我們介紹幾個好用的排序與統計命令,首先是排序命令sort。

[root@www ~]# sort [-fbMnrtuk] [file or stdin]
選項與參數:
-f  :忽略大小寫的差異,例如 A 與 a 視為編碼相同;
-b  :忽略最前面的空格符部分;
-M  :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『純數字』進行排序(默認是以文字型態來排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的數據中,僅出現一行代表;
-t  :分隔符,默認是用 [tab] 鍵來分隔;
-k  :以那個區間 (field) 來進行排序的意思

范例一:個人賬號都記錄在 /etc/passwd 下,請將賬號進行排序。
[root@www ~]# cat /etc/passwd | sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
# 鳥哥省略很多的輸出~由上面的數據看起來, sort 是默認『以第一個』數據來排序,
# 而且默認是以『文字』型態來排序的喔!所以由 a 開始排到最后啰!

范例二:/etc/passwd 內容是以 : 來分隔的,我想以第三欄來排序,該如何?
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
# 看到特殊字體的輸出部分了吧?怎么會這樣排列啊?呵呵!沒錯啦~
# 如果是以文字型態來排序的話,原本就會是這樣,想要使用數字排序:
# cat /etc/passwd | sort -t ':' -k 3 -n
# 這樣才行啊!用那個 -n 來告知 sort 以數字來排序啊!

范例三:利用 last ,將輸出的數據僅取賬號,並加以排序
[root@www ~]# last | cut -d ' ' -f1 | sort

  sort 同樣是很常用的命令呢!因為我們常常需要比較一些信息啦! 舉個上面的第二個例子來說好了!今天假設你有很多的賬號,而且你想要知道最大的使用者 ID 目前到哪一號了!呵呵!使用 sort 一下子就可以知道答案咯!當然其使用還不止此啦! 有空的話不妨玩一玩!

  參考資料:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash.php#sort


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM