我有一个包含事件时间序列的日志文件。现在,我想分析数据以计算不同时间间隔的事件数。每个条目都显示在此时间戳中发生了一个事件。例如这里是日志文件的一部分
09:00:00
09:00:35
09:01:20
09:02:51
09:03:04
09:05:12
09:06:08
09:06:46
09:07:42
09:08:55
我需要每隔 5 分钟计算一次事件。结果应该是这样的:
09:00 4 //which means 4 events from time 09:00:00 until 09:04:59<br>
09:05 5 //which means 4 events from time 09:00:05 until 09:09:59<br>
等等。
你知道 bash、shell、awk 中的任何技巧吗?
感谢您的帮助。
最佳答案
awk
助您一臂之力。
awk -v FS="" '{min=$5<5?0:5; a[$1$2$4min]++} END{for (i in a) print i, a[i]}' file
说明
它获取每一行中第 1、2、4 和 5 个字符的值,并跟踪它们出现的次数。为了在 0-4
和 5-9
范围内分组,它在 0
中创建了 var min
第一种情况,5
第二种情况。
示例
根据您的意见,
$ awk -v FS="" '{min=$5<5?0:5; a[$1$2$4min]++} END{for (i in a) print i, a[i]}' a
0900 5
0905 5
使用另一个示例输入,
$ cat a
09:00:00
09:00:35
09:01:20
09:02:51
09:03:04
09:05:12
09:06:08
09:06:46
09:07:42
09:08:55
09:18:55
09:19:55
10:09:55
10:19:55
$ awk -v FS="" '{min=$5<5?0:5; a[$1$2$4min]++} END{for (i in a) print i, a[i]}' a
0900 5
0905 5
0915 2
1005 1
1015 1
关于linux - 在linux中分析时间跟踪数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21453486/