Я хочу проанализировать некоторые журналы для статистики использования.По сути, я хочу использовать regexp, чтобы облегчить боль при анализе
Итак, у меня есть текстовый файл с записями чего-то по этому
2011-09-17 09:16:33,531 INFO [someJava.class.special] sendRequest: fromGevoName=null, ctrlPageId=fooBar, actionId=search,
2011-09-17 09:16:33,976 INFO [someJavaB.class] fooBar
2011-09-17 09:16:33,982 DEBUG [someOtherJava.class] abc blabala
2011-09-17 09:16:33,987 INFO [someJava.class.special] sendRequest completed: fromGevoName=XYZ, toPageId=fooBar, userId=someUser
.... Я хочу подсчитать вхождениявсех слов в позиции
[someJava.class.special] ctrlPageId=....
в данном случае fooBar и только в этом случае.Есть много разных fooBar, и я хочу посчитать, как часто они встречались.
Моя идея состояла в том, чтобы заменить подходящей группой и повторить что-то в этом
((?s).*\[someJava.class.special\] sendRequest: fromGevoname=.* ctrlPageId=([^,]*)(?-s).*)*
и заменить насоответствующая группа \2
Затем проанализируйте список в Excel.Но мой greptool не повторяет регулярное выражение, оно совпадает только один раз.Я использую grepWin, может быть, есть другой инструмент / регулярное выражение для этого?
Ну, в основном это была проблема wingrep или grepwin.Модификатор (? S), который включает переносы строк на точках или отключает его (? -S), не работает, если вы используете его несколько раз.Так что я обменял регулярное выражение на что-то вроде этого:
([\n-\[\(\]\.,:0-9a-zA-Z]).*\[someJava.class.special\] sendRequest: fromGevoname=.* ctrlPageId ([^,]*)(?-s).*
, поэтому я в основном поменял первую точку соответствия строк на все символы, которые могут встречаться в строке, включая разрывы строк.Это работает ... я уверен, что есть лучшее решение, всегда открытое для него