Как посчитать повторяющиеся записи в журнале - PullRequest
0 голосов
/ 24 июня 2019

Я хочу проанализировать файл журнала и сосчитать повторяющиеся записи журнала.

Я видел этот ответ , но каждая запись журнала уникальна из-за отметки времени.

Если запись в журнале имеет формат

Time stamp: [log message]

Как удалить начало строки до [двоеточие] [пробел], чтобы я мог их посчитать?Я предполагаю, что команда sed может это сделать?

[edit]

К сожалению, это было слишком упрощением для моей части журнала.Пример журнала;

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 голосов
/ 28 июня 2019

Спасибо @pyromonk, который указал мне правильное направление.

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

сделал то, что мне было нужно.Поскольку не все сообщения отформатированы одинаково, мне нужно было выполнить это с несколькими различными регулярными выражениями.

Я узнал, что часть -o grep отправляет совпадающую часть строки для сортировки и подсчета,Вывод не выдается в виде упорядоченного списка, но подсчитывает уникальные сообщения журнала.

0 голосов
/ 26 июня 2019

Предполагая, что каждое сообщение журнала находится в квадратных скобках, а имя файла - "file.log", это даст вам желаемый результат:

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

Для будущеговарианты использования, я рекомендую вам ознакомиться с регулярными выражениями .Они очень полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...