Я прочесываю лог-файл веб-приложения для выделенных операторов.
Большинство строк похожи и неинтересны. Я бы пропустил их через Unix uniq
, но это ничего не фильтрует, так как все строки немного отличаются: у всех разная временная метка, похожие операторы могут печатать другой идентификатор пользователя и т. Д.
Какой способ и / или инструмент, чтобы получить только линии, которые заметно отличаются от любых других? (Но, опять же, не точные дубликаты)
Я думал о том, чтобы поиграть с difflib в Python, но это похоже на различие двух файлов, а не всех пар строк в одном файле.
[EDIT]
Я предполагал, что решение даст оценку уникальности для каждой строки. Таким образом, под «заметно отличающимся» я имел в виду, я выбираю порог, который должен превышать показатель уникальности для любой строки, которая будет включена в вывод.
Исходя из этого, если есть другие жизнеспособные способы его определения, пожалуйста, обсудите. Кроме того, метод не должен иметь 100% точность и отзыв.
[/ EDIT]
Примеры:
Я бы предпочел ответы как можно более общего назначения. Я знаю, что могу убрать метку времени в начале. Разбор конца более сложен, так как его язык может быть совершенно не похож ни на что в этом файле. Такого рода детали объясняют, почему я раньше избегал конкретных примеров, а потому, что некоторые люди спрашивали ...
Аналог 1:
2009-04-20 00:03:57 INFO com.foo.Bar - URL:/graph?id=1234
2009-04-20 00:04:02 INFO com.foo.Bar - URL:/graph?id=asdfghjk
Аналог 2:
2009-04-20 00:05:59 INFO com.baz.abc.Accessor - Cache /path/to/some/dir hits: 3466 / 16534, 0.102818% misses
2009-04-20 00:06:00 INFO com.baz.abc.Accessor - Cache /path/to/some/different/dir hits: 4352685 / 271315, 0.004423% misses
Разное 1:
2009-04-20 00:03:57 INFO com.foo.Bar - URL:/graph?id=1234
2009-04-20 00:05:59 INFO com.baz.abc.Accessor - Cache /path/to/some/dir hits: 3466 / 16534, 0.102818% misses
В случае «Разное 1» я хотел бы, чтобы обе строки возвращались, но не такие, как они. Другими словами, эти две линии являются разными типами (тогда я могу позже запросить только статистически редкие типы линий). С одной стороны, расстояние редактирования между этими двумя значениями намного больше.