[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,

你可能感兴趣的:([009]sort命令使用)