LINUX.ORG.RU

Подскажите по regexp для анализа лога.

 ,


0

1

Привет!

Пытаюсь сделать выборку из логов access.log httpd, застрял на универсальном регулярном выражении..

Из логов вида

10.1.1.208 - 07994428 [16/Nov/2014:03:02:01 +0300] "GET /site.com/clientchunk?nocache=1416096154886-332154 HTTP/1.1" 200 42 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" "2.8.130.63" "56.003(56.003)" "-"
10.1.1.208 - 494463 [16/Nov/2014:03:01:57 +0300] "POST /s8/v1/service HTTP/1.1" 200 72 "http://reload.ru/?ISDN=1469663&REDIR" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "8.8.28.32" "0.922(0.922)" "-"
101.21.8.214 - - [14/Nov/2014:03:04:24 +0300] "GET /router/ HTTP/1.1" 200 53 "http://unbl.ru/s" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4" 
30.22.8.215 - - [09/Nov/2014:03:02:13 +0300] "GET /router/ HTTP/1.1" 200 53 "http://unbl.ru/spb" "Mozilla/5.0 (Linux; U; Android 4.2.2; ru-ru; Lenovo A859 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 (Mobile; afma-sdk-a-v6188000.4452000.1)" "21.6.159.8" "0.002(0.002)" "-"

Нужно выбрать строки где поле http referer равно "-", а также строчки где поле http referer не равно "-"

В данном случае логи настроен так, что http referer пишется сразу после кода ответа сервер и размера данных.
Пока никак не могу понять, от чего отталкиваться,чтобы точно не пропустить строки. Считать пробелы ?, Т.к лог не одинаковый, и часто в случаях отсутствия разной информации также используется "-".

Я бы посчитал кавычки в строке, и если их количество равно 12, то взять значения для анализа между 3 и 4 кавычками.

justAmoment ★★★★★
()

Там где реферер не -

sed -n '/^[^]]*] "[^"]*" [^ ]* [^ ]* "\([^"]*\)"/p'

Там где реферер -

sed '/^[^]]*] "[^"]*" [^ ]* [^ ]* "\([^"]*\)"/d'

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.