[Shell] Sort排序的例子

source data
[/tmp/test]# more tt1
50 IT                                         China            800 
10 ACCOUNTING                                 LA               1100
20 RESEARCH                                   DALLAS           560
30 SALES                                      CHICAGO          2800
40 OPERATIONS                                 BOSTON           5500
10 DEVELOPER                                  HOSTON           1300


1.按照第二列排序
[/tmp/test]# sort -t ' ' -k2 tt1
10 ACCOUNTING                                 LA               1100
10 DEVELOPER                                  HOSTON           1300
50 IT                                         China            800 
40 OPERATIONS                                 BOSTON           5500
20 RESEARCH                                   DALLAS           560
30 SALES                                      CHICAGO          2800

2.按照第四列降序排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -nrk4 | awk '{printf "%-4s%-20s%-10s%-5s\n",$1,$2,$3,$4}'
40  OPERATIONS          BOSTON    5500 
30  SALES               CHICAGO   2800 
10  DEVELOPER           HOSTON    1300 
10  ACCOUNTING          LA        1100 
50  IT                  China     800  
20  RESEARCH            DALLAS    560 

3,按照第一列升序,第四列降序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -n -k1 -k4,4nr | awk '{printf "%-4s%-20s%-10s%-5s\n",$1,$2,$3,$4}'
10  DEVELOPER           HOSTON    1300 
10  ACCOUNTING          LA        1100 
20  RESEARCH            DALLAS    560  
30  SALES               CHICAGO   2800 
40  OPERATIONS          BOSTON    5500 
50  IT                  China     800 

4.按第四列的第二个字符之后的数字排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -t ' ' -nk4.2 | awk '{printf "%-4s%-15s%-10s%-5s\n",$1,$2,$3,$4}'   --需要加上 -t ' ',不加上不行,郁闷
50  IT             China     800  
20  RESEARCH       DALLAS    560  
10  ACCOUNTING     LA        1100 
10  DEVELOPER      HOSTON    1300 
40  OPERATIONS     BOSTON    5500 
30  SALES          CHICAGO   2800 

5.按第二列的第二个字母排序 
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -t ' ' -k2.2,2.2 | awk '{printf "%-4s%-15s%-10s%-6s\n",$1,$2,$3,$4}'    --需要加上 -t ' ',不加上不行,郁闷
30  SALES          CHICAGO   2800  
10  ACCOUNTING     LA        1100  
10  DEVELOPER      HOSTON    1300  
20  RESEARCH       DALLAS    560   
40  OPERATIONS     BOSTON    5500  
50  IT             China     800  

sort还有很多其他的选项,如果需要查看具体的使用信息使用 man sort查看

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24237320/viewspace-2060704/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24237320/viewspace-2060704/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值