Linux sort命令使用示例
来源:互联网 发布:yy网络直播间 编辑:程序博客网 时间:2024/06/05 18:03
我们在开发、维护的过程中,有时会需要将log、数据等做过滤和筛选
例如,我们有这样一个文件 daily_pv.txt ,它可能有10W行,其部分内容如下:
20170702 a 5233120170703 a 6321020170701 b 23421320170703 b 34100020170701 a 5210320170702 b 233333
三列数据 分别对应了日期、地区标识、PV。此时我们可能需要将其按照时间排序,或是按照PV排序,方便我们进行分析。
很多时候我们的第一反应是写一小段代码,将文件读取到内存中,做排序然后再输出。这个方法是很好,但是比较费时,而我们使用一条shell命令就可以搞定。
但我们应该如何写呢?
首先让我们了解一下sort命令:
sort命令可以让我们快速的对数据进行排序,其语法及常用参数格式如下
sort [-bcfMnrtk][源文件][-o]-b 忽略每行开头的空白字符-c 检查文件是否已经按照顺序排序-f 排序时,忽略大小写字母-M 将前3个字母依照月份缩写进行排序-n 依照数值大小进行排序-o 排序结果输出文件路径-r 逆序-t 指定排序时以什么字符来分隔各栏位-k 选择以-t分隔后的哪个区间来作为排序字段
让我们直接以上面的 daily_pv.txt 文件作为例子来演示
1、 不加任何参数,此时会按照每一行从头到尾的ASIIC码顺序来做排序
$ sort daily_pv.txt20170701 a 5210320170701 b 23421320170702 a 5233120170702 b 23333320170703 a 6321020170703 b 341000
2、按照第三栏的数字大小作为排序依据(记得要加-n,不然会按照ASIIC顺序做排序,则会把233333做为最小,而63210作为最大)
$ sort -t $'\t' -k 3 -n daily_pv.txt20170701 a 5210320170702 a 5233120170703 a 6321020170702 b 23333320170701 b 23421320170703 b 341000
细心的同学可能会注意到我们使用了 $’\t’ 来表示制表符,这是因为在sort命令中如果指定的分隔符是 ‘\t’,则需要用美元符$来表示它本来的意思,否则sort无法识别’\t’,而如果是其他的字符例如”,就不存在这个问题,当然我们也可以加上 $ ,这是完全没有问题的。
3、只查看a的pv,按照日期排序
$ sort daily_pv.txt | grep a20170701 a 5210320170702 a 5233120170703 a 63210
此时我们需要配合 grep 来进行食用,通过管道命令”|” 将前一个指令的输出作为后一个指令的输入。从而实现我们的过滤。
阅读全文
0 0
- Linux sort命令使用示例
- Linux sort命令示例
- Linux sort 命令 使用
- linux sort命令使用
- Linux 的sort命令使用
- Linux命令Sort简单使用
- Linux find 命令使用示例
- linux locate 命令使用示例
- Linux下sort命令的使用
- Linux命令之sort的使用
- linux下sort命令使用详解
- Linux命令之sort的使用
- Linux下sort命令的使用
- linux中sort命令的使用
- Linux中find命令的使用示例
- Linux—防火墙Iptables命令使用示例
- Linux 下 ss 命令使用示例
- linux中的sort命令
- 浅析.tbd与.dylib
- jQuery Validate插件
- 前端笔试准备:数据库&&操作系统&&算法
- 大型网站技术架构(五)--网站高可用架构
- echarts 仪表图-实例
- Linux sort命令使用示例
- 【Hibernate】的cascade属性
- java 搭建spring核心框架
- python 二叉树的相关实现
- 逆序对的求法(树状数组)
- pip、virturalenv、supervisor学习使用
- 疯狂队列
- 一次关于mongodb性能踩坑的总结
- 大型网站技术架构(六)--网站的伸缩性架构