使用awk进行简单文件处理对文件分割求平均
2016-01-26 15:32
387 查看
一、文件格式
线上有这么一份文件需要做一个统计的信息格式类似如下:
不同为:; 不同为:; 不同为:; 不同为:; 不同为:; 不同为:; 不同为:; 不同为:; 无用个数为:13 总个数为:13 无用比例为:1; 无用个数为:16 总个数为:16 无用比例为:1; 无用个数为:21 总个数为:21 无用比例为:1; 无用个数为:18 总个数为:18 无用比例为:1; 无用个数为:20 总个数为:20 无用比例为:1; 无用个数为:23 总个数为:23 无用比例为:1; 无用个数为:19 总个数为:19 无用比例为:1; 无用个数为:60 总个数为:60 无用比例为:1; Thread:7 TotalCount:2 CostTime:0.140625s TongjiCostTime:0.09375s SelectCostTime:0.015625s InsertCostTime:0.03125s; Thread:8 TotalCount:2 CostTime:0.140625s TongjiCostTime:0.09375s SelectCostTime:0.015625s InsertCostTime:0.03125s; Thread:5 TotalCount:2 CostTime:0.140625s TongjiCostTime:0.09375s SelectCostTime:0.015625s InsertCostTime:0.03125s; Thread:4 TotalCount:2 CostTime:0.15625s TongjiCostTime:0.09375s SelectCostTime:0.015625s InsertCostTime:0.046875s; Thread:3 TotalCount:2 CostTime:0.15625s TongjiCostTime:0.109375s SelectCostTime:0.015625s InsertCostTime:0.03125s; Thread:6 TotalCount:2 CostTime:0.15625s TongjiCostTime:0.109375s SelectCostTime:0.015625s InsertCostTime:0.03125s; Thread:9 TotalCount:2 CostTime:0.15625s TongjiCostTime:0.09375s SelectCostTime:0.03125s InsertCostTime:0.03125s; Thread:0 TotalCount:2 CostTime:0.15625s TongjiCostTime:0.109375s SelectCostTime:0.015625s InsertCostTime:0.03125s;
二、所需要做的处理
所需要做的处理就是将无用个数,总个数,无用比例,以及统计时间,select时间,insert时间全部求出一个平均值,进而来估测性能的改进或者之后要做如何的处理三、使用方法
第一个想到使用awk进行处理,将所有的文件用vim进行处理后,得到类似如下的格式::31 :83 :0.373493975903614 :43 :92 :0.467391304347826 :35 :95 :0.368421052631579 :38 :93 :0.408602150537634 :33 :98 :0.336734693877551 :37 :106 :0.349056603773585 :38 :104 :0.365384615384615以上是无用比例部分的处理,将所有的文件拷贝到本地,然后使用grep命令
grep "无用个数" temp.txt >temp2.txt得到所有的之后进行替换,最终生成处理格式的结果
这个时候的数据已经成为规则的数据,以下按照awk进行处理,按照冒号进行分割,然后对第二列,第三列,第四列分别进行求和求平均
awk使用如下
cat temp2.txt|awk -F ':' '{sum+=$3} END {print "average = ", sum/NR}'以上的命令就可以实现所需要的功能,其中NR是所有的行数,其中$3对应的是总的个数,如果想对每一行进行输出就是
cat temp2.txt|awk -F ':' '{print "$3 = ", $3}'如果想对总和进行输出就是
cat temp2.txt|awk -F ':' '{sum+=$3} END {print "sum = ", sum}'其中awk分为三部分,begin部分为每一行需要进行的预处理,{}为对于每一行进行的处理,end部分为对于最终处理之后进行的处理,表示的是最终处理
相关文章推荐
- 优先队列 (2)
- Prim算法-最小生成树(附题:HDU-1875 畅通工程再续)
- LAMP环境配置-Apache的深入理解
- js 闭包
- JavaScript学习笔记2--DOM、运动
- 求两整数的最大公约数(递归法)和最小公倍数
- sparkSQL metaData配置到Mysql
- ui网址
- 用elasticsearch和kibana 进行简单的实时数据报表分析
- 命令行进度条
- SDWebImage的使用与原理
- 美团Android自动化之旅—生成渠道包
- 正则表达式30分钟入门教程
- 移动端等分比显示导航状态
- Docker 初探1
- Exception in thread "http-bio-8081-exec-3" java.lang.OutOfMemoryError: PermGen space
- 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群 (1)
- iOS给UIButton添加一个新的属性
- 超级文本编辑器Sublime Text3
- 使用String逐个赋值字符