2017-01-31 13 views
-4

Я хочу измерить время между переданными и принятыми пакетами в файле ниже трассировки.awk script для вычисления задержки из файла трассировки 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-кода?

Ожидаемый результат может быть как ниже:

Выход:

0.0100001 
    0.01 
    0.000001 

Я буду благодарен, если кто-то помогает.

+0

[править] Ваш вопрос, чтобы включить краткий, проверяемый ввод образца и ожидаемый результат Если вам нужен внешний сайт, чтобы показать это, то вам. не прилагаем усилий к тому, чтобы сделать его минимальным (как в [mcve]). –

+0

Надеюсь, что мой ответ сработал для вас. Если да, подумайте о том, чтобы принять его в качестве вашего ответа - щелкнув полый зеленый галочку/галочку рядом с подсчетом голосов Если нет, скажите, что не сработало, чтобы я или кто-то еще мог помочь вам. Спасибо. Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer- work/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 

Что говорит ... «Если вы видите строку, начинающуюся с +, сохраните второе поле как переменную tx. Если вы видите строку, начинающуюся с r, сохраните второе поле как переменную rx. Рассчитайте разницу между rx и tx и сохраните его как d. Перестройте первое поле линии, добавив (d=variable d) в конец того, что было. 1 в конце говорит awk делать свою естественную вещь - т. Е напечатать строку»

+0

Большое спасибо за ваши усилия, чтобы объяснить так. – josef

 Смежные вопросы

  • Нет связанных вопросов^_^