AWK模不能正确使用跟踪文件

AWK模不能正确使用跟踪文件,awk,Awk,使用AWK,我试图解析如下跟踪文件: s 5.072000000 _59_ AGT --- 9 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [9] 0 0 r 5.072000000 _59_ RTR --- 9 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.0

使用AWK,我试图解析如下跟踪文件:

s 5.072000000 _59_ AGT  --- 9 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [9] 0 0
r 5.072000000 _59_ RTR  --- 9 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [9] 0 0
s 5.080000000 _59_ AGT  --- 10 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [10] 0 0
r 5.080000000 _59_ RTR  --- 10 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [10] 0 0
s 5.088000000 _59_ AGT  --- 11 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [11] 0 0
r 5.088000000 _59_ RTR  --- 11 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [11] 0 0
s 5.096000000 _59_ AGT  --- 12 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [12] 0 0
r 5.096000000 _59_ RTR  --- 12 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [12] 0 0
s 5.104000000 _59_ AGT  --- 13 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [13] 0 0
r 5.104000000 _59_ RTR  --- 13 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [13] 0 0
s 5.112000000 _59_ AGT  --- 14 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [14] 0 0
r 5.112000000 _59_ RTR  --- 14 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [14] 0 0
s 5.120000000 _59_ AGT  --- 15 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [15] 0 0
r 5.120000000 _59_ RTR  --- 15 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [15] 0 0
s 5.128000000 _59_ AGT  --- 16 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [16] 0 0
r 5.128000000 _59_ RTR  --- 16 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [16] 0 0
s 5.136000000 _59_ AGT  --- 17 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [17] 0 0
r 5.136000000 _59_ RTR  --- 17 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [17] 0 0
s 5.144000000 _59_ AGT  --- 18 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [18] 0 0
r 5.144000000 _59_ RTR  --- 18 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [18] 0 0
s 5.152000000 _59_ AGT  --- 19 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [19] 0 0
r 5.152000000 _59_ RTR  --- 19 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [19] 0 0
s 5.160000000 _59_ AGT  --- 20 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [20] 0 0
r 5.160000000 _59_ RTR  --- 20 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [20] 0 0
s 5.168000000 _59_ AGT  --- 21 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [21] 0 0
r 5.168000000 _59_ RTR  --- 21 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [21] 0 0
s 5.176000000 _59_ AGT  --- 22 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [22] 0 0
r 5.176000000 _59_ RTR  --- 22 cbr 1000 [0 0 0 0] [energy 1994.974330 ei 5.011 es 0.000 et 0.001 er 0.014] ------- [59:0 0:0 32 0] [22] 0 0
第1列中的“s”和“r”分别表示“发送”和“接收”。第2列显示时间。我希望在所有行上运行以下分支指令,从而计算传递率,即
nRecvd/nSent*100的百分比比率,但在10秒间隔内。接下来,我想将每个间隔的时间和交付率(成对)附加到文件中,以便以后可以使用这些对进行打印。但是,下面的AWK代码没有给我任何输出。我错在哪里

BEGIN{
 nSent=0;
 nRecvd=0;
 nDropped=0;
 FILE="delivery.txt"
}

{
if ($1 == "s" && $4 == "AGT") nSent++;
else if ($1 =="r" && $4 == "AGT") nRecvd++;
else if ($1 =="D") nDropped++;
if ($1 == "r" && $4 =="AGT" && ($2 % 10) ==0) { 
 print $2 " " nSent/nReceived*100 "\n" >>FILE;
 nSent=0;
 nRecvd=0;
}

}

END {

}
更新:

跟踪文件的另一部分如下所示:

r 10.103806919 _0_ AGT  --- 120 cbr 1020 [13a 0 21 800] ------- [33:0 0:0 30 0] [7] 1 0
s 10.104000000 _33_ AGT  --- 126 cbr 1000 [0 0 0 0] [energy 1989.895903 ei 9.962 es 0.000 et 0.076 er 0.066] ------- [33:0 0:0 32 0] [13] 0 0
r 10.104000000 _33_ RTR  --- 126 cbr 1000 [0 0 0 0] [energy 1989.895903 ei 9.962 es 0.000 et 0.076 er 0.066] ------- [33:0 0:0 32 0] [13] 0 0
s 10.104000000 _33_ RTR  --- 126 cbr 1020 [0 0 0 0] [energy 1989.895903 ei 9.962 es 0.000 et 0.076 er 0.066] ------- [33:0 0:0 30 0] [13] 0 0
r 10.104096612 _33_ MAC  --- 0 ACK 38 [0 21 0 0] [energy 1989.895903 ei 9.962 es 0.000 et 0.076 er 0.066] 
r 10.104114453 _14_ MAC  --- 0 AODV 48 [0 ffffffff f 800] [energy 1989.895886 ei 10.069 es 0.000 et 0.003 er 0.032] ------- [33:255 -1:255 

我想这是因为你的模。事实上,在awk
1.00001%2=1.00001
中。因此,如果你从来没有一个四舍五入的时间(即X.0),那么你最后一个if将永远不会是真的。尝试使用
int()


我想这是因为你的模。事实上,在awk
1.00001%2=1.00001
中。因此,如果你从来没有一个四舍五入的时间(即X.0),那么你最后一个if将永远不会是真的。尝试使用
int()


您在打印规则中使用的是从未设置/修改的
nReceived
。所以这很可能会导致错误

在示例中的“
r
”行上,
$4
始终是“
RTR
”,这将导致除以零


下次请告诉我们,什么不起作用?没有输出?错误消息?

您正在打印规则中使用从未设置/修改的
nReceived
。所以这很可能会导致错误

在示例中的“
r
”行上,
$4
始终是“
RTR
”,这将导致除以零


下次请告诉我们,什么不起作用?没有输出?错误消息?

我没有收到任何输出。在应用@Shitsu的铸造建议后,我现在收到一个零除法通知。另外,请注意,实际的跟踪文件太大,太包含在这里了,所以我只给出了部分。我在上面的回答中解释了零除:您试图使用
nReceived
作为除数,但它当时不存在。您是对的。我错误地输入了
nReceived
,而不是
nReceived
。我没有得到任何输出。在应用@Shitsu的铸造建议后,我现在收到一个零除法通知。另外,请注意,实际的跟踪文件太大,太包含在这里了,所以我只给出了部分。我在上面的回答中解释了零除:您试图使用
nReceived
作为除数,但它当时不存在。您是对的。我错误地键入了
nReceived
,而不是
nReceived
if ($1 == "r" && $4 =="AGT" && (int($2) % 10) == 0)