Linux常用统计命令之sort

sort是在Linux里非常常用的一个统计命令

sort的工作原理

sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

其语法及常用参数格式:

sort [-bcfMnrtk][源文件][-o 输出文件]

补充说明:sort可针对文本文件的内容,以行为单位来排序。

参  数:

  • -b 忽略每行前面开始出的空格字符。
  • -c 检查文件是否已经按照顺序排序。
  • -f 排序时,忽略大小写字母。
  • -M 将前面3个字母依照月份的缩写进行排序。
  • -n 依照数值的大小排序。
  • -h 使用易读性数字(例如:2K、1G)排序
  • -o <输出文件> 将排序后的结果存入指定的文件。
  • -r 以相反的顺序来排序。
  • -t <分隔字符> 指定排序时所用的栏位分隔字符。
  • -k 选择以哪个区间进行排序,常与-t参数连用
  • -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

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

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

一个例子:

$ 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
posted @ 2020-09-25 21:21  尘世风  阅读(403)  评论(0编辑  收藏  举报
*/