У меня есть следующие строки логов в лог-файл access_20170118_14.log
-POSIX соответствия регулярных выражений с Nginx logwarn не работает с [: цифры:] класс символов
127.0.0.1 - - [18/Jan/2017:14:22:16 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.1" 200 168 "-" "curl/7.40.0" - 0.008
127.0.0.1 - - [18/Jan/2017:14:22:24 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.0" 200 168 "-" "curl/7.40.0" - 0.008
Ниже приводится команда Nginx logwarn, которая выводит эти строки журнала из этого файла журнала, которые имеют код HTTP доступа отличный от 200 и 204.
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx_access /mnt/log/nginx/access_20170118_14.log '!.*HTTP/1.(1|0)\"\s*(200|204)'
регулярного выражения в указанных выше командных работах, как ожидались.
Однако я хочу избавиться от (1|0)
, которые добавляются в соответствии с HTTP версии 1.0 и 1.1 и заменяют его любой цифрой, чтобы она работала для любой версии HTTP.
Следующая команда, с классом [:digit:]
символов, однако соответствует линии с HTTP версии 1.1 и 1.0, а также с кодом доступа 200 -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx_access /mnt/log/nginx/access_20170118_14.log '!.*HTTP/1.[:digit:]\"\s*(200|204)'
Output (не то, что я хочу) -
Log errors: 127.0.0.1 - - [18/Jan/2017:14:22:16 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.1" 200 168 "-" "curl/7.40.0" - 0.008
127.0.0.1 - - [18/Jan/2017:14:22:24 +0000] "GET //fam/shared_generate_test_devicelist.php HTTP/1.0" 200 168 "-" "curl/7.40.0" - 0.008
Возможно, вы можете попробовать \ d вместо этого (насколько вы уже используете \ s)? –
ведущий '!' В регулярном выражении, что это? – sweaver2112