Привет!
Пытаюсь сделать выборку из логов 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 пишется сразу после кода ответа сервер и размера данных.
Пока никак не могу понять, от чего отталкиваться,чтобы точно не пропустить строки. Считать пробелы ?, Т.к лог не одинаковый, и часто в случаях отсутствия разной информации также используется "-".