使用gawk从NS2读取跟踪文件

时间:2014-05-08 20:15:47

标签: awk gawk ns2

我是gawk的新用户。我试图通过在文件中放入一个小代码然后使该文件可执行来读取跟踪文件。以下是我想要做的事情。

#!/bin/sh 
set i = 0 
while ($i < 5) 
awk 'int($2)=='$i' && $1=="r"  && $4==0 {pkt += $6} END {print '$i'":"pkt}'  out.tr 
set i = `expr $i + 1` 
end

之后我运行以下命令:

sh ./test.sh

它说:

syntax error: word unexpected (expecting do)

任何帮助?

1 个答案:

答案 0 :(得分:1)

假设您使用的是bash

while循环的语法:

while test-commands; do consequent-commands; done

more info

要使用<运算符进行比较,您需要使用双括号,请参阅Shell ArithmeticConditional Constructs

要为代码中使用的变量赋值,只需编写i=0

要在awk中使用-v的{​​{1}}选项访问shell变量。

因此你可能会变成这样:

awk

此处i=0 while ((i < 5)) do awk -v k=$i 'int($2)==k && $1=="r" && $4==0 {pkt += $6} END {print k":"pkt}' out.tr i=`expr $i + 1` done 代码中的变量k具有来自shell的变量awk的值。 您可以使用$i或缩短expr $i + 1

,而不是$((i + 1))

此外,您可以使用$((++i))循环,然后您的代码变得更加清晰:

for