文章标签 ‘sort’

linux下sort命令使用笔记

2011年8月25日 没有评论

sort,顾名思义就是用来排序的,不关可以对已存在的文件中的行进行排序,也能够对管道输出进行排序。该命令常用的参数有如下一些:

-f		将小写字母与大写字母同等对待,即忽略大小写
-n		按数字(算术值)大小排序
-r		降序的形式来排序,默认是升序
-o		排序的结果输出到指定文件,如果输出文件是输入文件之一,
		sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。
-i		比较中忽略任何非显示字符
-t"sepchar"	指定sepchar为单一的字段分隔符,把行分割成多个列,
		可以对指定列一个或多个列来作为排序字段
+pos1 -pos2	pos为列的index,指定一个或几个字段作为排序关键字,
		字段位置从posl开始,到pos2为止(包括posl,不包括pos2
		也可以通过-k来达到+pos1 -pos2的选择关键列的目的

sort默认是把一行的所有信息都作为排序关键字,下面通过例子来说明按任意字段来作为关键字的排序

例如文本(文件名为test.txt)如下:

yams:104
turnips:8
potatoes:15
carrots:104
green beans:32
radishes:5
lettuce:15

需要按照“:”后面的数值大小进行排序,第一步要找到一个字符来作为分隔符,这里一目了然的就可以选择“:”,第二步确定该列是第几列,注意列的编号是从0开始的,所以这里排序的关键字段就是第一列,另外需要注意的是按照数字的大小来排序,所以不能忘记 -n,否则得到的结果不是预期的,按字符排序的话108 < 15 < 32 < 5。根据分析得到的命令就是:sort -t: +1 -2 -n test.txt 执行的结果如下:

radishes:5
turnips:8
lettuce:15
potatoes:15
green beans:32
carrots:104
yams:104

同样可以使用 -k来代替 +1 -2指定排序关键列,例如:sort -t: -k2 -n test.txt, 注意: -k指定的列是编号是从1开始的。

分类: Linux 标签: ,

无觅相关文章插件,快速提升流量