如何计算重复的日志条目

时间:2019-06-24 11:09:26

标签: logging count duplicates

我要分析日志文件并计数重复的日志条目。

我看到了这个answer,但是由于时间戳记,每个日志条目都是唯一的。

如果日志条目的格式为

Time stamp: [log message]

如何删除行首,直到[冒号] [空格],这样我才能计算它们?我猜想sed命令可以做到吗?

[编辑]

可悲的是,这对我而言是过于简化了。日志示例;

Jun 27 20:39:26 emonpi systemd[1]: Starting Clean php session files...
Jun 27 20:39:26 emonpi systemd[1]: Started Clean php session files.
Jun 27 21:09:25 emonpi systemd[1]: Starting Clean php session files...
Jun 27 21:09:26 emonpi systemd[1]: Started Clean php session files.

要搜索的唯一元素将是第一个:(冒号)。

我希望它在日志文件中统计这些消息中的每条消息。

2 个答案:

答案 0 :(得分:0)

假设每个日志消息都在方括号内,并且文件名是“ file.log”,这将为您提供所需的输出:

grep -E -o '\[.+?\].*' file.log | sort | uniq -c

对于将来的用例,建议您熟悉regular expressions。他们非常有帮助。

答案 1 :(得分:0)

感谢@pyromonk向我指出了正确的方向。

grep -E -o  ':\s.*' syslog | sort -nr | uniq -cd

我需要什么。由于并非所有消息的格式都相同,因此我需要使用多个不同的正则表达式来运行它。

我了解到,grep的-o部分会将行的匹配部分发送到sort and count。输出不是作为有序列表显示的,而是对唯一日志消息进行计数。