Linux sort 命令详解
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思
-o : 对数据进行重定向
1-1)、准备数据
[root@hadoop1 /]# vi test.log
aa 1
bb 3
cc 2
ab 4
ba 1
de 2
ef 6
dfd 7
1-2)、对数据进行排序
[root@hadoop1 /]# vi source.log
google:110:5000
baidu:100:5000
guge:50:3000
sohu:100:4500
A)、对数据进行正序排序
[root@hadoop1 /]# sort source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
默认的是按照第一个单词进行排序
B)、对数据进行倒叙排序
[root@hadoop1 /]# sort -r source.log
sohu:100:4500
guge:50:3000
google:110:5000
baidu:100:5000
C)、对数据去重
[root@hadoop1 /]# sort -u source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
D)、把排序完的数据进行重新保存
[root@hadoop1 /]# sort source.log -o source.log
root@hadoop1 /]# cat source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
-o 参数不会对之前的数据进行清空
E)、按照第一个字段排序
[root@hadoop1 /]# sort -t ':' -k 1 source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
-t :表示分隔符
-k : 标志制定那个字段进行排序
F)、按照多个字段排序
[root@hadoop1 /] # sort -n -t ':' -k 2 -k 3 source.log
guge:50:3000
sohu:100:4500
baidu:100:5000
google:110:5000
-n : 是按照数字排序
G)、第三个字段按照降序排序
[root@hadoop1 /] # sort -n -t ':' -k 2 -k 3r source.log
guge:50:3000
baidu:100:5000
sohu:100:4500
google:110:5000
-k 3r :表示降序排序
或者这样写
sort -t ':' -k 2n -k 3nr source.log
guge:50:3000
baidu:100:5000
sohu:100:4500
google:110:5000
H)、按照第一个单词第二个字母排序
[root@hadoop1 /] #sort -t ':' -k 1.2 source.log
baidu:100:5000
sohu:100:4500
google:110:5000
guge:50:3000