首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux sort命令的几个细节有关问题

2012-09-09 
Linux sort命令的几个细节问题Linux sort命令的原理是逐行按字符进行比较排序,当然,也可以通过命令行参数

Linux sort命令的几个细节问题

        Linux sort命令的原理是逐行按字符进行比较排序,当然,也可以通过命令行参数设定按数字进行比较,或者指定行间的分隔符,对某一个或一些字段按照自己指定的规则进行排序。这是一个很常用而且很方便的命令,但是其中的一些细节需要注意,否则会得到错误的排序结果。

1. 比较方式

        前面说过,sort命令默认是按照字符串排序,真的是这样么?看看sort的help信息,末尾有这样的文字:

~$ cat text 1|101|21|10|2~$ echo $LC_ALLC~$ sort -t "|" -k 2 text 1|101|21|10|2~$ sort -t "|" -k 2,2 text 1|10|21|101|2

        虽然10排在101前面,但是不指定字段结束时,默认会继续比较,即比较’|’和’1’,所以有上面的结果。

        通常,我们只希望按照一个或者多个字段排序,而不希望从某个字段开始一直比较到行末,所以用这个参数时最好同时指定start和end。

5. 多条件排序

        在按字段排序时如果想采用多个排序条件,如先按第二列升序,如果相同则按第三列降序,可以使用多个-k参数,如-k 2,2n –k 3,3nr

热点排行