我想从我拥有的文件计算响应时间。响应时间将是从源(A)发送数据包到源(A)从目的地(B)收到确认之间的时间。使用awk将是提取响应时间的答案。但是,我对如何应用逻辑有点困惑。下面的跟踪文件的一部分:使用awk从文件计算时间
+ 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
- 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
+ 0.101172 6 0 tcp 40 ------- 1 6.1 2.1 0 1
- 0.102032 0 1 tcp 40 ------- 1 6.0 2.0 0 0
+ 0.102394 6 0 tcp 40 ------- 1 6.2 2.2 0 2
.......
.....
+ 0.112517 6 0 tcp 40 ------- 1 6.6 2.6 0 6
+ 0.122096 1 2 tcp 40 ------- 1 6.0 2.0 0 0
.....
r 0.148256 0 6 ack 40 ------- 1 2.0 6.0 0 7
r 0.149428 0 6 ack 40 ------- 1 2.1 6.1 0 8
...
在这个例子中我将集中于源(6)和目的地(2)之间的通信。所以响应时间会(0.148256 - 0.1)。
r 0.148256 0 6 ack 40 ------- 1 2.0 6.0 0 7
这行示出了0($ 10)中接收它是从2端口0($ 9)ACK至 源6端口的答复,虽然在示例中,第一行:
+ 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
显示请求由源(6)端口0($ 9)发送到目标(2)端口0($ 10)。 整个跟踪文件的目的地总是(2),我想的是这样的: 注意:每次端口(它是$ 9或$ 10的一部分)号码都改变了,这意味着新的请求连接。
记录发起的请求的时间:
$1 == "+" && $5 == "tcp" && $6 == 40 && $10== 2.port && $9==source.port) {
print $2; // would be the start
}
记录时接收到的响应的时间;
$1 == "r" && $5 == "ack" && $6 == 40 && $9== 2.port && $10==source.port) {
print $2; // would be the end
}
预期的输出可以通过两种方式为一列:基于流ID IE流1
1):
source: 6.0 - 2.0 ---> response time: 0.148256 - 0.1
source: 6.1 - 2.1 ---> response time : end-start
source: any source.port-2.port --> response time : end-start
我的问题,我不知道如何自动化代码,所以我可以查看整个跟踪文件并存储响应时间的值。最后我想要图形响应时间。有什么建议么?不介意其他脚本语言!
通过添加和明确标注“基于上述示例输入的所需输出”部分,您的好问题可以变得更好。您可能还想标记任何您希望被跳过的输入行,并在尾部添加注释,如“#skip”。祝你好运! – shellter
感谢您的提示。检查更新! – SimpleNEasy
对不起,我真的不把它作为示例输出。如果你想要这些文字字符串,只需'打印'响应时间\ n ------------------- \ n值“'。祝你好运。 – shellter