-
2009-01-11
使用grep awk 命令行工具进行统计 - [学习总结]
师兄做小论文,碰到需要提取文本中特殊信息,然后再对特殊信息进行统计。
如对下面的信息进行统计。
1.pir=0.008
BufferSize 4
CTPNoxim - the NoC Simulator
(C) University of CataniaReset... done! Now running for 10000 cycles...
Noxim simulation completed.
( 11000 cycles executed)
% Total received packets: 77
% Total received flits: 488
% Global average delay (cycles): 6.51948
% Global average throughput (flits/cycle): 0.0364063
% Throughput (flits/cycle/IP): 0.0180741
% Max delay (cycles): 18
% Total energy (J): 7.38455e-07Noxim - the NoC Simulator
(C) University of CataniaReset... done! Now running for 10000 cycles...
Noxim simulation completed.
( 11000 cycles executed)
% Total received packets: 74
% Total received flits: 445
% Global average delay (cycles): 6.86486
% Global average throughput (flits/cycle): 0.048611
% Throughput (flits/cycle/IP): 0.0247222
% Max delay (cycles): 19
% Total energy (J): 6.56272e-07
CT要求:例如,每遇到5个”% Total received packets: 77”就算一次平均值,其他的类似。
由于这样的信息很多,上万条吧,txt文本就有200多K,用手和眼睛做,那是累死人。
由于我以前玩过一点点,所以试着做一下.
思路:
1.首先需要剔除掉一些没用的文本行。这里假设只留下行首包含% 的行。
2.处理之后剩下的数据是每七行一组。这七行分别显示不同的数据。我们首先需要对某一项数据进行统计,首先就得抽取出某一行,如包含Total received packets: 的行。
3.得到某一项数据之后,然后就需要统计每5行的平均数。
第1点和第2点只需要用下grep。第3点有点难度。试过用excel,能做,可是半自动的算平均数,还是很耗时,很麻烦。用C语言写要不断的读写文件,指针操作,虽然简单,也麻烦。那就用AWK吧。AWK确实很强大,由于本人只了解点皮毛,折腾一上午才弄出来。
就一条语句:
awk -F : 'BEGIN {j=0;i=0;} /%/&&/packets/ {{a[j]=a[j]+$2;i++};if(i%5==0) {j++;}} END {for(i=0;i<j;i++) {printf "%.2f\n",a[i]/5}}' xxx.txt >yyy.txt
见识了AWK的强大吧。 继续学习~~~
随机文章:
google日历共享群发短信 2009-10-17VC++动态库和静态库创建与使用 2009-01-12Linux下面替换批量文件中的字符串 2008-11-02sizeof() 2008-06-23我的vim 常用命令总结(陆续添加) 2008-06-19
Post Addr: