ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [Shell] Sort排序的例子

[Shell] Sort排序的例子

原创 Linux操作系统 作者:tolilong 时间:2016-03-21 10:00:02 0 删除 编辑
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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-07-13

  • 博文量
    406
  • 访问量
    1004345