2017-01-31 13 views
-4

以下のトレースファイルで送受信されたパケット間の時間を測定したい。トレースファイルns-3からの遅延を計算するためのawkスクリプト

入力:ここ

+ 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受信したデータを表すを表します。トレースファイルの2列目に時間が表示されます。

awkコードを使用してファイル全体のrと+の間の時間を測定するにはどうすればよいですか?

予想される出力は以下のようになります

出力:

0.0100001 
    0.01 
    0.000001 

誰が助け場合、私は感謝するでしょう。

+0

簡潔でテスト可能なサンプル入力と予想される出力を含めるように質問します。 –

+0

私の答えがあなたのために働いてくれることを願っています。もしそうなら、それをあなたの答えとして受け入れることを検討してください - 投票数の横の緑色のチェック/チェックマークをクリックしてください私が、または他の誰かが、あなたをさらに助けることができるように、何がうまくいかなかったと言ってください。ありがとうhttp://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-仕事/ 5235#5235 –

答えて

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 

That says ... "+で始まる行がある場合は、2番目のフィールドを変数txとして保存します。 rで始まる行が表示された場合は、2番目のフィールドを変数rxとして保存します。 rxtxの差を計算し、dとして保存します。行の最初のフィールドを再作成し、末尾に(d=variable d)を追加します。最後に1awkにその自然なこと、つまり行を印刷するように指示します。 "

+0

このように説明してくれてありがとうございました。 – josef

関連する問題