国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > regex > 正文

用正則刪除不包含某個字符串的行的代碼

2020-01-20 22:20:59
字體:
供稿:網(wǎng)友
先說一下這個可疑的ip,58.63.144.170,據(jù)說是一個弱智的蜘蛛,上帝保佑它下地獄。

看過apache日志的朋友應該知道,apache的訪問日志的每一行是以訪問者的ip開始的。因為日志比較大,所以我是用ultraedit來看的。用ultraedit的時候需要注意,它的正則一共有兩種,一種是符合perl規(guī)范的,而默認的是ut自帶的一種,寫法比較特殊。本文中用到的正則表達式都是perl兼容的,ut中這個選項可以在“高級->配置->搜索->正則表達式引擎”中進行修改。

經(jīng)過一番思索,發(fā)現(xiàn)自己掌握的正則表達式中好象沒有能直接刪除“不包含”一個指定串的用法。思前想后,先寫一個包含指定串的再說吧:^(58.63.144.170).*$,測試一下,可以把包含指定ip的行找出來,接下來要做的就是怎么把這些行保留下來而刪除另外的行。在嘗試了N次以后,我終于放棄了直接刪除不包含這個ip的行的想法。怎么辦呢?退一步海闊天空!既然不能直接刪除,那就迂回一下吧。雖然不能直接刪除不包含指定串的行,但刪除不包含指定字符的正則我還是會寫的:)

先給包含指定ip的行做個標志,這里要用到ut的替換功能。要查找的行:^(58.63.144.170)(.*)。因為日志的每一行都是以數(shù)字開始的,所以我選擇‘%'做為標志的特殊符號,要替換成的正則為:%$1$2。全部替換以后,包含指定ip的行就變成了這個樣子:%58.63.144.170……。接下來,我們再把行首不是‘%'的行刪掉,查找:^[^%].*,替換處為空。執(zhí)行全部替換,日志中只剩下了以‘58.63.144.170'開頭的行,大功告成!等等,剩下的空行太難看,讓我們把它們干掉,查找:^[/r/n]*$,替換處為空,執(zhí)行全部替換,世界終于清靜了...

其實本文中用的正則都是很基本的東西,雖然最終沒能寫出刪除包含指定字符串的行的正則,但在迂回中最終也是現(xiàn)實了想要的功能,而且看上去也更清晰一些。有時候退一步未必不是一個更好的選擇。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 天津市| 金塔县| 祁门县| 化州市| 灵寿县| 三穗县| 蒙山县| 如皋市| 美姑县| 和田市| 伊金霍洛旗| 祁东县| 琼海市| 正安县| 漾濞| 加查县| 准格尔旗| 安龙县| 重庆市| 吴堡县| 天柱县| 巴林右旗| 岐山县| 登封市| 行唐县| 丹阳市| 灵武市| 光泽县| 色达县| 科技| 岱山县| 平阴县| 神农架林区| 昌江| 阿拉尔市| 沁水县| 亚东县| 澳门| 棋牌| 延长县| 台中县|