我有,在從碼頭訪問日誌egrep的訪問日誌記錄不匹配的一些字符串
egrep '^.*? ".+? /admin/hb .*?".*?$' /m1/logs/ap*access*2013_03_19.log
我會提取所有的GET /管理/ HB記錄做得很好,現在想給egrep的獲取所有不是「GET/admin/hb」的行。它足以與egrep的-v簡單...
egrep -v '^.*? ".+? /admin/hb .*?".*?$' /m1/logs/ap*access*2013_03_19.log
...但我最終會被把這個expresion成Groovy腳本,並想知道如何否定「/管理/ 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
嗯。這個答案是相關的,但我不知道如何整合它:http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word – 2013-03-20 18:04:22