【发布时间】:2016-10-20 12:55:33
【问题描述】:
以下正则表达式有效(通过 regex101.com 尝试 PCRE/PHP 风格的正则表达式)以匹配给定日志文件中不包含代码 201 和 204 的行 -
正则表达式
/^(?!.*HTTP\/1.1\"\s*(201|204)).*$/gm
示例日志文件
127.0.0.1 - - [20/Oct/2016:11:35:08 +0000] "GET //fam/shared_generate_LDA_compliant.php HTTP/1.1" 200 171 "-" "curl/7.40.0" - 0.002
127.0.0.1 - - [20/Oct/2016:11:35:34 +0000] "GET /fam/update_daily_cap_in_memcache_contents.php HTTP/1.1" 200 64 "-" "curl/7.40.0" - 2.032
127.0.0.1 - - [20/Oct/2016:11:36:01 +0000] "GET //fam/audience_pixel_cache_generator.php HTTP/1.1" 200 229001 "-" "curl/7.40.0" - 0.063
127.0.0.1 - - [20/Oct/2016:11:36:01 +0000] "GET //fam/shared_generate_banner_campaign_assoc.php HTTP/1.1" 200 302 "-" "curl/7.40.0" - 0.406
127.0.0.1 - - [20/Oct/2016:11:36:02 +0000] "GET /fam/update_daily_cap_in_memcache_contents.php HTTP/1.1" 200 64 "-" "curl/7.40.0" - 0.888
127.0.0.1 - - [20/Oct/2016:11:36:32 +0000] "GET /fam/update_daily_cap_in_memcache_contents.php HTTP/1.1" 200 64 "-" "curl/7.40.0" - 0.965
127.0.0.1 - - [20/Oct/2016:11:37:01 +0000] "GET //fam/audience_pixel_cache_generator.php HTTP/1.1" 200 229001 "-" "curl/7.40.0" - 0.021
我想在这个 nagios 插件命令上应用相同的命令,但它不起作用 -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx -p /mnt/log/nginx/access_`(date +'%Y%m%d')`_`(date +'%H')`.log "^(?!.*HTTP\/1.1\"\s*(201|204)).*$"
抛出错误 -
bash: !.*HTTP\/1.1\"\s*: event not found
以下正则表达式与 nagios 插件命令一起使用,该命令会找出包含代码 200 或 201 的行 -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx -p /mnt/log/nginx/access_`(date +'%Y%m%d')`_`(date +'%H')`.log ".*HTTP/1.1\"\s*(200|201)"
悬赏
如何匹配不包含代码 201 和 204 的行而不使用 POSIX 风格的正则表达式中的前瞻?
【问题讨论】:
-
在模式周围使用单引号,而不是双引号。
-
喜欢这个? ` /usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_nginx -p /mnt/log/nginx/access_
(date +'%Y%m%d')_(date +'%H').log '^(?!.*HTTP\/1.1\"\ s*(201|204)).*$'` 仍然出现错误 -UNKNOWN: logwarn(1) error: invalid regular expression "^(?!.*HTTP\/1.1\"\s*(201|204)).*$": Invalid preceding regular expression -
logwarn 使用 POSIX 扩展正则表达式,而不是 PCRE。 POSIX 不支持前瞻。
-
@melpomene 好的,您能否提供一些关于如何在不使用前瞻的情况下完成它的指示?
标签: regex linux bash posix nagios