继续leach协议的学习。
今天要处理仿真结果,最好能画几个图。于是看了awk的资料,找到个别人写好的awk处理leach.alive的脚本。发现语法本身就错了。。网上几处帖子都是一样的,少了个“}”,修改过来后发现结果也不对。。
最后懒得改了,既然知道leach.alive里面是什么,干嘛还看别人写的脚本,还得去理解,怪累的,索性自己写一个好了。
本人编程水平很凹,所以就凑合用吧,反正我懂啥意思,结果应该没问题。
重写了一个,代码如下:
#!/usr/bin/awk
BEGIN {
time[0] = 0;
num = 0;
nodes_alive[0] = 100;
}
# Action
{
sim_time = $1;
node_id = $2;
node_state = $3;
if (sim_time > time[num]) {
num++;
time[num] = sim_time;
nodes_alive[num] = nodes_alive[0];
}
if (node_state == 0) {
nodes_alive[num]--;
}
}
END {
for (i=0; i<=num; i++) {
printf("%f %d\n", time[i], nodes_alive[i]);
}
}
算了,不贴图了,网速不行。总之跟leach.out的结果比对过了,没有错误。
忘了说了,保存这个脚本node-alive.awk后,在终端输入awk -f node-alive.awk leach.alive >nodes-alive.data
就生成了一个nodes-alive.data文本。里面是整理后的数据。