Linux中sort命令

Linux sort命令用于将文本文件内容按某种方式排序,默认是ASCII码方式:

语法说明:

sort[-bcdfimMnur][-o<输出文件>][-t<分隔字符>][-k<n,m>][文件]

常用参数:

-b 忽略每行前面开始出的空格字符。-c 检查文件是否已经按照顺序排序。-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。-f 排序时,将小写字母视为大写字母。-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。-m 将几个排序好的文件进行合并。-M 将前面3个字母依照月份的缩写进行排序。-n 依照数值的大小排序。-o<输出文件> 将排序后的结果存入指定的文件。-u 排除重复项-r 以相反的顺序来排序。-t<分隔字符> 指定排序时所用的栏位分隔字符。–help 显示帮助。–version 显示版本信息。-k[n[,m]]指定一个或几个字段作为排序关键字,字段位置从n开始,到m为止(包括n,不包括m)。如不指定m,则关键字为从n到行尾。字段和字符的位置从0开始,第一列为1。常用例子:(整理了最有代表行的13个例子)01.对file文件,按照ASCII排序

[root@host ~]# cat fileUnixLinuxSolarisAIXLinuxHPUX[root@host ~]# sort file      #默认按照ascii排序AIXHPUXLinuxLinuxSolarisUnix

02.对file文件排序,并移除重复项

[root@host ~]# cat fileUnixLinuxSolarisAIXLinuxHPUX[root@host ~]# sort -u file    #排除重复行AIXHPUXLinuxSolarisUnix

03.对file文件,按一般排序

[root@host ~]# cat file2019549200[root@host ~]# sort file #一般排序1920200495#注意是首字母1..10来排序,这一般不是我们想要的.

04.对file文件,按数字自然顺序来排序

[root@host ~]# cat file2019549200#按数字自然顺序来排序[root@host ~]# sort -n file5192049200

05.对file文件,按数字自然顺序倒排序

[root@host ~]# cat file2019549200#按数字倒排序[root@host ~]# sort -nr file2004920195

06.对file1,file2两个文件,按数字倒排序,并移除其重复项,输出到file3

[root@host ~]# cat file12019549200[root@host ~]# cat file2252518548200#按照自然顺序倒排序并移掉重复项[root@host ~]# sort -nr -u file1 file2 -o file32004948252019185

07.对file文件,按月份来排序

[root@host ~]# cat fileAug 8 30Jan 1 31Mar 3 31Feb 2 28May 5 30Jul 7 31Jun 6 30[root@host ~]# sort -M fileJan 1 31Feb 2 28Mar 3 31May 5 30Jun 6 30Jul 7 31Aug 8 30

08.对多域值文件file,按第一列来排序

[root@host ~]# cat fileLinux,20Unix,30AIX,25Linux,25Solaris,10HPUX,100# -t',' 以逗号分隔,也可以用""# -k1,1 Form Field 1 to Field 1, 常用的用法,也就是按第一列排序[root@host ~]# sort -t',' -k1,1 fileAIX,25HPUX,100Linux,20Linux,25Solaris,10Unix,30

09.对多域值文件file,按第二列自然数字排序并移除重复行

[root@host ~]# cat fileLinux,20Unix,30AIX,25Linux,25Solaris,10HPUX,100#-k2n 第二列按自然数排序[root@host ~]# sort -t"," -k2n,2 -u fileSolaris,10Linux,20AIX,25Linux,25Unix,30HPUX,100#Linux,25这一行就会被移除

10.对多域值文件file,先按第一列排序,再按第二列自然数字倒序排列

[root@host ~]# cat fileLinux,20Unix,30AIX,25Linux,25Solaris,10HPUX,100#-k 1,1 也可以分开来写#-knr,2 也可以拆开来写 -k2,2 -nr[root@host ~]# sort -t',' -k1,1 -k2nr,2 fileAIX,25HPUX,100Linux,25Linux,20Solaris,10Unix,30

11.对多域值文件file,先按第一列排序,再按第三列自然数字倒序排列

[root@host ~]# cat filegoogle 110 5000baidu 100 5000guge 50 3000sohu 100 4500#-t' ',默认是按空格,Tab键来排序,所以此处可以不要,只是为了好理解些#-k 1.2,1.2 from 1 to 1,也就是按第一列来排序#1.2表示第一列,第二个字符.  #-k 3,3nr 第三列按自然数字倒序.注意其表现形式[root@host ~] sort -t' ' -k 1.2,1.2 -k 3,3nr filebaidu 100 5000google 110 5000sohu 100 4500guge 50 3000

12.综合管道命令,统计每个用户的登陆总次数

#last取出所有用户访问列表,第一列为用户名[root@linux ~] lastUser   TTY  IP          TIME                   Duration                 -------------------------------------------------------root   tty1 192.168.0.1 Mon Aug 15 11:55 -17:48 (05:53)root   tty1 192.168.0.1 Mon Aug 18 10:17 -11:54 (01:37)...#uniq -c 进行计数#cut -d' ' -f1  按空格分割,取第一列,即取出用户[root@linux ~] last | cut -d' ' -f1 | sort | uniq -c

13.综合管道命令,将两个文件中文件合并,排序,移重复,并放到新文件中

[root@host ~]# cat file12019549200[root@host ~]# cat file2252518548200[root@host ~]# cat file1 file2 | sort -nr | uniq  > file3[root@host ~]# cat file32004948252019185

Note:默认是TAB,空格排序,所以空格,或TAB键分割的,可以不用-t参数-t:和-t’:’,-t":"都是一样的sort -t: +1 -1 file #旧写法,能看懂就行了等同于sort -t":" -k1,1-k1,1默认写法,即按第一列来排序 -k1.2,1.2按第一列第二个字符排序-k1,1也可以直接用 -k 1 来表示按第一列来排序sort经常是通过管道符|和uniq,cat,cut一起使用

综合例子:

sort -n -k 6 -k 9 -t ‘,’ file1 > file2-n 按算术顺序来排序-k 指定一个或几个字段作为排序关键字,字段位置从n开始,到m为止(包括n,不包括m)。 如不指定m,则关键字为从n到行尾。-t 存放临时文件的目录’,’ 以逗号为分割

最好的感觉就是你什么都跟我说。

Linux中sort命令

相关文章:

你感兴趣的文章:

标签云: