AWK模不能正确使用跟踪文件
使用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
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
我想这是因为你的模。事实上,在awk1.00001%2=1.00001
中。因此,如果你从来没有一个四舍五入的时间(即X.0),那么你最后一个if将永远不会是真的。尝试使用int()
:
我想这是因为你的模。事实上,在awk1.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)