[009]sort命令使用

背景

查找日志的时候我们经常需要获取某个维度的信息,这个涉及到截取字段和排序了,比如按照执行时间排序。

sort 命令解析

sort的工作原理
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

如果想按照某一列排序,就需要把列分割出来 且指定某一列。 分割列通过参数 -t '分隔符',指定某一列通过参数 -k 列索引,比如 -k 4 -k 5就是先按第4列再按第5列排序。

面对sort命令我暂时提出问题:
1.如果有不可见的字符怎么办?
2.大小写怎么办?
3.排序如何只取前面几个。
对于这些问题如果sort有解决可以通过man sort解决
4.sort 支持特定领域的排序,比如按照月份排序等等。

man sort
 -b, --ignore-leading-blanks
              ignore leading blanks

       -d, --dictionary-order
              consider only blanks and alphanumeric characters

       -f, --ignore-case
              fold lower case to upper case characters

-n 按照数字排序 -t ','按照,分割 (-k 4 -k 5 先按第四列排序 再按第5 列排序)
默认:是按照整行比对排序,

样例:读取一个文件先按第2列降序排列再按第4列降序排列
[stlm@Develop-Mcp ~]$ cat 71000001_20170104.txt |sort -n -t ',' -k 2r -k 4r | head -10
20170104,17010450052451,REFUND,3,0,
20170104,17010450052405,REFUND,1,0,
20170104,17010450052385,SUCCESS,1200,0,
20170104,17010450052327,REFUND,1,0,
20170104,17010450052325,REFUND,1,0,
20170104,17010450052322,REFUND,1,0,
20170104,17010450052313,SUCCESS,11,0,
20170104,17010450051848,REFUND,10,0,
20170104,17010450051790,SUCCESS,1000,0,
20170104,17010450051786,REFUND,15000,0,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,220评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,743评论 0 15
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,299评论 0 35
  • sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作...
    你清澈又神秘阅读 813评论 0 2
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33