我想测量下面跟踪文件中传输和接收数据包之间的时间。
输入:
+ 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
如果有人帮忙,我将感激不尽。
答案 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
。计算rx
和tx
之间的差异,并将其另存为d
。通过将(d=variable d)
附加到它的结尾来重建该行的第一个字段。最后的1
告诉awk
做自然的事情 - 即打印该行。"