文件编辑 awk sed 应用小记

早就LInux两个巨强大的文件编辑工具 sed awk命令

之前只是很肤浅的简单了解下

今天统计测试数据的时候突然想应用一下

 之前是先粘贴到txt,再导入excel 统计的,很麻烦

log是类似下面的类型,统计平均时间

Starting download file 7
Starting download file 9
Starting download file 8
Download has benn done@@taskID = 1loopTimes =0   using total time ==956519
Starting download file 1
Download has benn done@@taskID = 3loopTimes =0   using total time ==987816
Starting download file 3
Download has benn done@@taskID = 9loopTimes =0   using total time ==1014928
Starting download file 9
Download has benn done@@taskID = 6loopTimes =0   using total time ==1054772
Starting download file 6
Download has benn done@@taskID = 7loopTimes =0   using total time ==1136218
Starting download file 7
Download has benn done@@taskID = 2loopTimes =0   using total time ==1167879
Starting download file 2
Download has benn done@@taskID = 0loopTimes =0   using total time ==1168782
Starting download file 0
Download has benn done@@taskID = 8loopTimes =0   using total time ==1211500
Starting download file 8
Download has benn done@@taskID = 4loopTimes =0   using total time ==1248124
Starting download file 4
Download has benn done@@taskID = 5loopTimes =0   using total time ==1340375

先用sed把带有时间标记的行筛选出来

sed -n '/done@@taskID/p' 301 >103

然后awk分理出最后时间的字段

awk '{print $11}' 103 >222

发现统计出来的带有两个等号

==1230716
==1081027
==1042317

继续用sed替换掉

sed 's/==//g' 222 >444

好了现在都是我想要的数据了

怎么直接算出他的平均值呢,或者求和

awk编程强大在此

awk '{sum+=$1} END {print "Sum=",sum}' 444

接下来计算平均值

awk '{sum+=$1} END {print "Average=",sum/NR}' 444

搞定!

果然强大!

猜你喜欢

转载自bingtang5.iteye.com/blog/2089152