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开始的。