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。
- 01. 对file文件,按照ASCII排序
[root@host ~]# cat file Unix Linux Solaris AIX Linux HPUX [root@host ~]# sort file #默认按照ascii排序 AIX HPUX Linux Linux Solaris Unix
- 02. 对file文件排序,并移除重复项
[root@host ~]# cat file Unix Linux Solaris AIX Linux HPUX [root@host ~]# sort -u file #排除重复行 AIX HPUX Linux Solaris Unix
- 03. 对file文件,按一般排序
[root@host ~]# cat file 20 19 5 49 200 [root@host ~]# sort file #一般排序 19 20 200 49 5 #注意是首字母1..10来排序,这一般不是我们想要的.
- 04. 对file文件,按数字自然顺序来排序
[root@host ~]# cat file 20 19 5 49 200 #按数字自然顺序来排序 [root@host ~]# sort -n file 5 19 20 49 200
- 05. 对file文件,按数字自然顺序倒排序
[root@host ~]# cat file 20 19 5 49 200 #按数字倒排序 [root@host ~]# sort -nr file 200 49 20 19 5
- 06. 对file1,file2两个文件,按数字自然顺序倒排序,并移除其重复项
[root@host ~]# cat file1 20 19 5 49 200 [root@host ~]# cat file2 25 25 18 5 48 200 #按照自然顺序倒排序并移掉重复项 [root@host ~]# sort -nr -u file1 file2 200 49 48 25 20 19 18 5
- 07. 对file文件,按月份来排序
[root@host ~]# cat file Aug 8 30 Jan 1 31 Mar 3 31 Feb 2 28 May 5 30 Jul 7 31 Jun 6 30 [root@host ~]# sort -M file Jan 1 31 Feb 2 28 Mar 3 31 May 5 30 Jun 6 30 Jul 7 31 Aug 8 30
- 08. 对多域值文件file,按第一列来排序
[root@host ~]# cat file Linux,20 Unix,30 AIX,25 Linux,25 Solaris,10 HPUX,100 # -t',' 以逗号分隔,也可以用"" # -k1,1 Form Field 1 to Field 1, 常用的用法,也就是按第一列排序 [root@host ~]# sort -t',' -k1,1 file AIX,25 HPUX,100 Linux,20 Linux,25 Solaris,10 Unix,30
- 09. 对多域值文件file,按第二列自然数字排序并移除重复行
[root@host ~]# cat file Linux,20 Unix,30 AIX,25 Linux,25 Solaris,10 HPUX,100 #-k2n 第二列按自然数排序 [root@host ~]# sort -t"," -k2n,2 -u file Solaris,10 Linux,20 AIX,25 Linux,25 Unix,30 HPUX,100 #Linux,25这一行就会被移除
- 10. 对多域值文件file,先按第一列排序,再按第二列自然数字倒序排列
[root@host ~]# cat file Linux,20 Unix,30 AIX,25 Linux,25 Solaris,10 HPUX,100 #-k 1,1 也可以分开来写 #-knr,2 也可以拆开来写 -k2,2 -nr [root@host ~]# sort -t',' -k1,1 -k2nr,2 file AIX,25 HPUX,100 Linux,25 Linux,20 Solaris,10 Unix,30
- 11. 对多域值文件file,先按第一列排序,再按第三列自然数字倒序排列
[root@host ~]# cat file google 110 5000 baidu 100 5000 guge 50 3000 sohu 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 file baidu 100 5000 google 110 5000 sohu 100 4500 guge 50 3000
Note:
- 默认是TAB,空格排序,所以空格,或TAB键分割的,可以不用-t参数
- -t:和-t‘:‘,-t":"都是一样的
- sort -t: +1 -1 file #旧写法,能看懂就行了等同于sort -t":" -k1,1
- -k1,1默认写法,即按第一列来排序 -k1.2,1.2按第一列第二个字符排序
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。