1. 程式人生 > 其它 >Linux之11——常用統計命令之sort

Linux之11——常用統計命令之sort

sort是在Linux裡非常常用的一個統計命令

1 sort的工作原理

sort將檔案的每一行作為一個單位,相互比較,比較原則是從首字元向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。

其語法及常用引數格式:

sort [-bcfMnrtk][原始檔][-o 輸出檔案] 補充說明:sort可針對文字檔案的內容,以行為單位來排序。 參  數: -b 忽略每行前面開始出的空格字元。 -c 檢查檔案是否已經按照順序排序。 -f 排序時,忽略大小寫字母。 -M 將前面3個字母依照月份的縮寫進行排序。 -n 依照數值的大小排序。    -h 使用易讀性數字(例如:2K、1G)排序 -o <輸出檔案> 將排序後的結果存入指定的檔案。
-r 以相反的順序來排序。 -t <分隔字元> 指定排序時所用的欄位分隔字元。 -k 選擇以哪個區間進行排序。    -v 按照版本排序    -u 排序後刪除重複行,等價於sort test1 | uniq sort -h
$ cat sort_h
60MB
10
1000KB
20MB
300KB
5
A
40GB
50KB
$ cat sort_h|sort -h
A
5
10
50KB
300KB
1000KB
20MB
60MB
40GB
View Code

sort -n

$ cat sort_n
01
00
0
70
78
67
23
30
09
44002
32010
32102
5743
3306
$ sort -n sort_n
0 00 01 09 23 30 67 70 78 3306 5743 32010 32102 44002
View Code

sort -t . -k 2 sort_t

$ cat sort_t
1.2.3.4
2.1.2.3
3.3.4.2
8.7.6.4
6.4.9.7

1SP2SP3SP4
2SP1SP2SP3
3SP3SP4SP2
8SP7SP6SP4
6SP4SP9SP7
$ sort -t . -k 2 sort_t

1SP2SP3SP4
2SP1SP2SP3
3SP3SP4SP2
6SP4SP9SP7
8SP7SP6SP4
2.1.2.3
1.2.3.4
3.3.4.2
6.4.9.7
8.7.6.4

View Code

一個例子:

$ last|grep -P '(\d{1,3}\.){3}\d{1,3}'|awk '{S[$3]++} END{for(a in S) {print a,S[a]}}'|sort -k 2 -rn
113.128.81.23 43
113.118.184.151 22
120.244.191.5 21
112.10.50.241 20
120.244.232.56 17
124.74.76.126 16
58.101.55.255 15
115.236.175.131 15
113.65.210.234 15
223.71.133.42 14
119.253.43.100 14
111.199.189.52 14
101.132.159.87 14
221.219.101.182 13
183.6.105.176 13
115.199.241.187 12
113.87.130.220 11
111.23.244.189 11
220.249.15.134 10
119.131.106.244 10
118.242.17.132 10
61.149.222.113 9
111.163.143.202 9
103.27.26.3 9
59.41.64.86 8
49.66.146.59 8