linuxsort命令详解
sort是在Linux⾥⾮常常⽤的⼀个命令,管排序的,集中精⼒,五分钟搞定sort,现在开始!
1 sort的⼯作原理
sort将⽂件的每⼀⾏作为⼀个单位,相互⽐较,⽐较原则是从⾸字符向后,依次按ASCII码值进⾏⽐较,最后将他们按升序输出。对⽂件的每⼀⾏排序,不改变原⽂件内容。
2 sort的-u选项
作⽤很简单,就是在输出⾏中去除重复⾏
3 sort的-r选项
sort默认的排序⽅式是升序,如果想改成降序,就加个-r就搞定了。
4 sort的-o选项
sort默认是把结果输出到标准输出,所以需要⽤重定向才能将结果写⼊⽂件,形如sort filename > newfile。
但是,如果你想把排序结果输出到原⽂件中,⽤重定向可就不⾏了。
linux重定向内容竟然被清空了
就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放⼼的将结果写⼊原⽂件。这或许也是-o⽐重定向的唯⼀优势所在。
5 sort的-n选项
你有没有遇到过10⽐2⼩的情况。我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先⽐较1和2,显然1⼩,所以就将10放在2前⾯喽。这也是sort的⼀贯作风。
我们如果想改变这种现状,就要使⽤-n选项,来告诉sort,“要以数值来排序”!
6 sort的-t选项和-k选项
如果有⼀个⽂件的内容是这样:
这个⽂件有三列,列与列之间⽤冒号隔开了,第⼀列表⽰⽔果类型,第⼆列表⽰⽔果数量,第三列表⽰⽔果价格。那么我想以⽔果数量来排序,也就是以第⼆列来排序,如何利⽤sort实现?
幸好,sort提供了-t选项,后⾯可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)
指定了间隔符之后,就可以⽤-k来指定列数了。
7 其他的sort常⽤选项
-f会将⼩写字母都转换为⼤写字母来进⾏⽐较,亦即忽略⼤⼩写
-c会检查⽂件是否已排好序,如果乱序,则输出第⼀个乱序的⾏的相关信息,最后返回1
-C会检查⽂件是否已排好序,如果乱序,不输出内容,仅返回1。(这条我运⾏有问题,好像没这个参数)
-M会以⽉份来排序,⽐如JAN⼩于FEB等等
-b会忽略每⼀⾏前⾯的所有空⽩部分,从第⼀个可见字符开始⽐较。
8 只针对公司英⽂名称的第⼆个字母进⾏排序,如果相同的按照员⼯⼯资进⾏降序排序:
由于只对第⼆个字母进⾏排序,所以我们使⽤了-k 1.2,1.2的表⽰⽅式,表⽰我们“只”对第⼆个字母进⾏排序。(如果你问“我使⽤-k 1.2怎么不⾏?”,当然不⾏,因为你省略了End部分,这就意味着你将对从第⼆个字母起到本域最后⼀个字符为⽌的字符串进⾏排序)。对于员⼯⼯资进⾏排 序,我们也使⽤了-k 3,3,这是最准确的表述(这个例⼦⾥,因为是最后⼀列,省略可以),表⽰我们“只”对本域进⾏排序,因为如果你省略了后⾯的3,就变成了我们“对第3个域开始到最后⼀个域位置的内容进⾏排序” 了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论