用gawk和gnuplot来分析ns2的trace文件

gawk主要功能是针对文本的每一行搜索指定的模式,当某一行符合patterns时就会执行actions。gawk采用这种方式来处理输入档案的每一行,直到输入文件结束。

一般情况下是 pattern { action} ,如果action省略了,默认的为print;如果pattern省略了,默认的所有行都满足条件

给出几个eg:

gawk '/foo/ {print $0}' BBS-list ,意思是BBS-list文件中每一行中只要有foo那么就打印每一行的第一项

gawk '$1~/foo/ {print $0}' BBS-list ,意思是BBS-list文件中每一行的第一项中有含foo,那么打印这一行全部

gawk 'BEGIN {OFS=";";ORS="\n\n"}/foo/{print $1,$2}' BBS-list ,意思是分析BBS-list文件开始时设置输出分隔符为";"输出记录分隔符为 "\n\n",之后存在foo的行打印第一项和第二项。

gawk '/2400/&&/foo/' BBS-list ,意思是对BBS-list文件分析,如果某一行出现了2400且出现了foo,那么打印这一行

更复杂的控制语句和内建函数目前还没有用到,先不写了~

gnuplot有两种工作方式,交互式方式和批处理方式。在命令行下直接输入gnuplot就进入交互式

几个eg:

plot [0:10] sin(x)+0.1x ,在区间0到10之间画出sin(x)+0.1x

plot 'test.data' with linespoints ,以test.data第一列为x坐标,第二列为y坐标

plot sin(x) title 'sqr1',cos(x) title 'sqr2' ,分别绘制sin(x) 和 cos(x)于一张图上,标注名分别定为sqr1,sqr2.

set xrange[1:10000]

set logscale x

set xtics 1,10,10e4

plot x

#意思是将x的范围设置为1到10000,对数形式显示x,1到10000以10为一个标度,打印plot x

我所用到的非常简单:

gawk '$3=="_6_" {print $3,$14}' trace_mrmc_afsls_cl.tr >>abc

plot 'abc'

有一个对gnuplot很详细的说明链接 http://www.ibm.com/developerworks/cn/linux/l-gnuplot/

原文地址:https://www.cnblogs.com/noanswer/p/3083164.html