awk脚本从跟踪文件ns-3计算延迟

时间:2017-01-31 22:55:22

标签: awk ascii ns-3

我想测量下面跟踪文件中传输和接收数据包之间的时间。

输入:

 + 0.01 /NodeList/1/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/Enqueue
 - 0.01 /NodeList/1/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/Dequeue
 r 0.0200001 /NodeList/0/DeviceList/2/$ns3::PointToPointNetDevice/MacRx
 + 0.11 /NodeList/1/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/Enqueue
 - 0.11 /NodeList/1/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/Dequeue
 r 0.12 /NodeList/0/DeviceList/2/$ns3::PointToPointNetDevice/MacRx
 + 0.12 /NodeList/0/DeviceList/3/$ns3::PointToPointNetDevice/TxQueue/Enqueue
 - 0.12 /NodeList/0/DeviceList/3/$ns3::PointToPointNetDevice/TxQueue/Dequeue
 r 0.120001 /NodeList/2/DeviceList/2/$ns3::PointToPointNetDevice/MacRx

这里+表示发送数据,r表示接收数据。跟踪文件中的第二列显示时间。

如何使用awk代码测量整个文件的r和+之间的时间?

预期输出可以如下:

输出:

  0.0100001
  0.01
  0.000001

如果有人帮忙,我将感激不尽。

1 个答案:

答案 0 :(得分:1)

我生成了自己的跟踪文件,名为trace,如下所示:

+ 0.1 Stuff stuff and more stuff
- 0.2 Yet more stuff
r 0.4 Something new
+ 0.8 Something else, not so new
- 1.6 Jiggery
r 3.2 Pokery
+ 6.4 Higgledy Piggledy

然后,我将使用awk处理您的问题,如下所示:

awk '/^+/{tx=$2}  /^r/{rx=$2; d=rx-tx; $1=$1 "(d=" d ")"} 1' trace

示例输出

+ 0.1 Stuff stuff and more stuff
- 0.2 Yet more stuff
r(d=0.3) 0.4 Something new
+ 0.8 Something else, not so new
- 1.6 Jiggery
r(d=2.4) 3.2 Pokery
+ 6.4 Higgledy Piggledy

那说...... "如果您看到以+开头的行,请将第二个字段另存为变量tx。如果您看到以r开头的行,请将第二个字段另存为变量rx。计算rxtx之间的差异,并将其另存为d。通过将(d=variable d)附加到它的结尾来重建该行的第一个字段。最后的1告诉awk做自然的事情 - 即打印该行。"