我有一个 egrep 可以很好地从 Jetty 访问日志中提取所有 GET /admin/hb 记录
egrep '^.*? ".+? /admin/hb .*?".*?$' /m1/logs/ap*access*2013_03_19.log
我现在想获取所有不是“GET /admin/hb”的行。使用 egrep -v 很简单...
egrep -v '^.*? ".+? /admin/hb .*?".*?$' /m1/logs/ap*access*2013_03_19.log
...但我最终会将这个表达式放入 Groovy 脚本中,并且想知道如何否定“/admin/hb”部分。我对消极环顾的微弱尝试失败了;它根本不匹配任何行。
egrep '^.*? ".+? ^(?!/admin/hb) .*?".*?$' /m1/logs/ap*access*2013_03_19.log
如何让 egrep 生成所有与 /admin/hb 不匹配的访问日志行?
测试数据集如下。我希望解决方案跳过第一行,但匹配接下来的两行:
127.0.0.1 - - [20/Mar/2013:16:37:08 +0000] "GET /admin/hb HTTP/1.1" 200 105 4
10.23.68.60 - - [20/Mar/2013:16:37:08 +0000] "GET /$PIT$/AUS/admin/hb HTTP/1.1" 200 0 4
10.23.68.64 - - [20/Mar/2013:16:36:47 +0000] "GET /handsets/dmhc HTTP/1.1" 200 0 1