没有规矩不成方圆 sort
Linux sort
命令用于将文本内容进行排序。
官方定义为:
sort
- sort lines of text files
语法
1 | $ sort [OPTION]... [FILE]... |
常用的参数为:
-c
检查文件是否已经按照顺序排序。-u
意味着是唯一的(unique),输出的结果是去完重了的。-r
以相反的顺序来排序。-k field1[,field2]
按指定的列进行排序。
这里假定测试文件名为testfile:
1 | LiSi 80 |
默认无参数
在使用 sort
命令以默认的式对文件的行进行排序,命令如下:
1 | $ sort testfile |
sort
命令默认情况下将第一列以 ASCII 码的次序排列,并将结果输出到标准输出。
根据第N列排序
对于测试文件而言,或许我们更希望使用数字来统计排序,此时可以使用-k N
参数,其中N为列数
1 | $ sort testfile -k 2 |
指定分隔符,进行排列
此时默认的分隔符为空格,如果是其他分隔符,比如分毫
检查是否已经排序
在某些情况下,或许只想看看文件是否已经排序,使用-c
参数 :
1 | $ sort -c testfile |
如果没有排序会有输出,而排序的话就没有输出。
逆序排列
如果希望看一下数字从高到低的培训,使用-r
参数:
1 | $ sort testfile -k 2 -r |
对一个使用冒号分隔的文件的第二项进行排序
$ sort -t: -k 2 names.txt
对使用tab分隔的第三项进行排序**(department_id),**并去掉重复项
$ sort -t: -u -k 3 names.txt
对passwd文件的第三项进行排序**(userid)**
$ sort -t: -k 3n /etc/passwd | more
基于ip地址对**/etc/hosts**文件排序
$ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
与其它命令组合在一起使用
ps –ef | sort : 对进程列表进行排序
ls -al | sort +4n : 使用升序对ls -al的输出以文件大小进行排序(第5项)
ls -al | sort +4nr : 使用降序对ls -al的输出以文件大小进行排序(第5项)