编写awk文件

  • 分析tr文件
    一共52列

在这里插入图片描述$1—time
在这里插入图片描述5
在这里插入图片描述
19
在这里插入图片描述
40 ?
在这里插入图片描述
37?

在这里插入图片描述45
在这里插入图片描述

  • 运行awk
awk -f filename.awk filename.tr
or
gawk -f filename.awk filename.tr

average throughput

#average throughput
BEGIN {
		recv_size=0
		sTime=1e6
		spTime=0
		NumOfRecd=0

}
#This awk file works only for new trace format,old trace does not have support
{
event =$1  //$表示第几列
time =$3
node_id=$5
packet=$19  //AGT
pkt_id=$41
flow_id=$39
packet_size=$37
flow_type=$45


if(packet="AGT"&& sendTime[pkt_id] == 0 && (event == "+" || event == "s")) {
	if(time <sTime) {
		sTime=time
	}
	sendTime[pkt_id] = time
	this_flow = flow_type
}

if(packet=="AGT" && event == "r") {
	if(time > spTime) {
		spTime=time
	}
	recv_size = recv_size + packet_size
	recvTime[pkt_id] = time
	NumOfRecd = NumOfRecd + 1
}
} 
END {
		if(NumOfRecd == 0 ) {
			printf("No packets,the simulation might be very small \n")
		}
		printf("Star Time %d\n",sTime)
		printf("Stop Time %d\n",spTime)
		printf("Received Packets %d\n",NumOfRecd)
		printf("The throughput in kbps is %f \n",(NumOfRecd/(spTime-sTime)(8/1000)))
}

运行awk产生TXT文件

gawk -f filename.awk filename.tr > through.txt
gedit  through.txt

instant Throughput

#instant Throughput 
BEGIN {
		recv=0
		currentTime =previousTime = 0
		timetic=0.1
}

{
event =$1  
time =$3
node_id=$5
# AGT-19
packet=$19  
pkt_id=$41
flow_id=$39
packet_size=$37
flow_type=$45


if(previousTime	 == 0)
	previousTime = time
	
if(packet --"AGT" && event =="r") {
	recv=recv +packet_size
	currentTime = currentTime + (time-previousTime)
	if(currentTime >= timetic) {
		printf("%f %f \n",time,(recv/currentTime)*(8/1000))
		recv=0
		currentTime=0
	}
	previousTime=time
}
}
END {
printf("\n")
}

画图

xgraph XXX.txt

在这里插入图片描述
或者

gnuplot
plot  "XXX.txt"(plot "XXX.txt with line)
quit

在这里插入图片描述
packet Delivery Ratio

gawk -f XXX.awk XXX.tr
#packet Delivery Ratio
BEGIN {
		sendPkt = 0
		recvPkt = 0
		forwardPkt = 0
}

{
packet=$19
event = $1
#if($1 == "s"&& $19 == "AGT")
if(event == "s"&& packet == "AGT"){
	sendPkt++;
}
if(event == "r"&& packet == "AGT"){
	recvPkt++;
}
if(event == "f"&& packet == "AGT"){
	forwardPkt++;
}

}

END {
		printf("the sent packets are %d \n",sendPkt);
		printf("the received packets are %d \n",recvPkt);
		printf("the forwarded packets are %d \n",forwardPkt);
		printf("Packet Delivery Ratio is %f \n",(recvPkt/sendPkt));
}

residual energy of node
生成TXT文件

gawk -f XXXawk XXX.tr > energy.txt
#residual energy of node
BEGIN {
		i=0
		n=0
		total_energy=0.0
		energy_avail[s] = initenergy;
}

{
event = $1
time = $3
node_id = $5
energy_value = $7
packet = $19
pkt_id = $41
pkt_type = $35

if(event == "N") {
		#看tcl文件,6为节点总数
		for(i=0;i<6;i++) {
			if(i==node_id) {
			energy_avail[i] = energy_avail[i]-(energy_avail[i] - energy_value);
			printf("%d-%f \n",i,energy_avail[i]);
			}
		}
}
}

END{
for(i=0;i<6;i++) {
		printf("Residual Energy of node %d is %f \n",i,energy_avail[i])
		total_energy = total_energy + energy_avail[i];
		if(energy_avail[i] !=0)
		n++
		
}
printf("the total Residual energy of  the  network is %f \n",total_energy);
printf("\n");
}

视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值