linux - 在linux中分析时间跟踪数据

标签 linux bash shell awk

我有一个包含事件时间序列的日志文件。现在,我想分析数据以计算不同时间间隔的事件数。每个条目都显示在此时间戳中发生了一个事件。例如这里是日志文件的一部分

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-45-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/

相关文章:

bash - 使用 bash 脚本解析文件

bash - 如何安装要在终端中使用的 Dart? (命令行)

linux - 从 bash shell 脚本中的整个字符串中提取路径

正则表达式使用文件名 shell 脚本过滤文件

shell - 如何通过shell脚本导出多行环境变量

c - 我如何确定在使用 pause() 时不会丢失信号?

linux - 使用在双引号中包含空格的参数调用 std::system

linux - 为什么这个命令会杀死我的 shell?

c++ - 服务器监听本地主机:8080 can Apache still listen to port 80?

python - 从 shell 和 python 中的行中删除字符串