-
Notifications
You must be signed in to change notification settings - Fork 9
/
Formatted.events.sh
28 lines (28 loc) · 2.12 KB
/
Formatted.events.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
echo "Все события без фильтров"
time grep -r ".*" -H /d/zhr/*/*.log | \
perl -ne '
use 5;
s/\xef\xbb\xbf//; #BOM - обязательно в начале, иначе с певой строкой будут проблемы
if(/log:\d\d:\d\d\.\d+-\d+,(\w+),/){ #если в строке есть идентификатор начала строки и это наш тип события
if(//){ #первоначальный отбор по событиям
s/\s+/ /g; #сворачиваю много пробелов в один, и перенос строки тоже здесь улетит в пробел
if(s/^.*\/(\w+)_(\d+)\/(\d{2})(\d{2})(\d{2})(\d{2})\.log\:\s*(\d+:\d+\.\d+)\-(\d+),(\w+),(\d+)//){
$_="\r\n".",dt=20".$3.".".$4.".".$5.",time=".$6.":".$7.",prc=".$1.",pid=".$2.",dur=".$8.",evnt=".$9.",ukn=".$10.$_ ;
}#добавляю в строки событий dt=ГГГГ.ММ.ДД,time=ЧЧ:ММ:СС.МКСМКС,prc=ИмяПпроцессаИзПути,pid=PidПроцессаИзПути и форматирую dur=длительность,evnt=событие
$f=1;
}else{$f=0};
}
elsif($f) { #если наше событие, то обрабатываем эту висячую строку
s/^.*log://; #из перенесённых строк просто вытираю начало
s/\s+/ /g; #сворачиваю много пробелов в один, и перенос строки тоже здесь улетит в пробел
}
if($f){
s/\x27//g; #убираю апострофы
print;
}END{print "\r\n"} #надо поставить, чтобы последняя строка в обработку попала
' | \
perl -ne '{
use 5;
s/(,)([\w\:]+\=)/ \[\]\[\]\[\] $2/g;
print;
}'