強大靈活的Sublime3正則替換功能
阿新 • • 發佈:2019-02-11
Sublime3的正則替換功能非常強大,在我使用過程中可以非常迅速的實現一些文字修改功能,尤其對資料量龐大的需要批量修改的文字格外厲害,比寫一個python或者java指令碼方便太多。比如批量新增字首,字尾,批量刪除,正則驗證等等,下面一一舉例演示
場景一:批量新增字首
以國內路由表為例,國內路由表羅列了很多IP段,通過這些IP段可以識別一個IP是不是大陸境內的IP,部署在網站上可以達到流量統計,防止攻擊,使用者識別的作用,其原始檔案模樣如下
1.0.1.0/24 1.0.2.0/23 1.0.8.0/21 1.0.32.0/19 1.1.0.0/24 1.1.2.0/23 1.1.4.0/22 1.1.8.0/21 1.1.16.0/20 1.1.32.0/19 1.2.0.0/23 1.2.2.0/24 1.2.4.0/24 ...
這個列表有4700多行,現在我想把這些IP段新增到linux netfilter防火牆的ipset功能中去,然後使用iptables設定黑白名單,那麼我需要把這些ip段轉換成shell命令新增到一個ipset列表中,命令格式如下
ipset add chinaroute 1.1.2.0/23
相當於給上面的每行ip段新增一個字首ipset add chinaroute ,然後儲存成可執行檔案執行即可。
首先使用Ctrl+H開啟替換功能,然後像下圖輸入正則表示式
點選Replace All後,立刻就變成了修改完後的結果,速度之快感覺不到CPU在執行,比Python指令碼或者Java指令碼方便太多,結果如下
這樣把這個檔案新增執行許可權在Linux中直接執行即可ipset add chinaroute 1.0.1.0/24 ipset add chinaroute 1.0.2.0/23 ipset add chinaroute 1.0.8.0/21 ipset add chinaroute 1.0.32.0/19 ipset add chinaroute 1.1.0.0/24 ipset add chinaroute 1.1.2.0/23 ipset add chinaroute 1.1.4.0/22 ipset add chinaroute 1.1.8.0/21 ipset add chinaroute 1.1.16.0/20 ipset add chinaroute 1.1.32.0/19 ipset add chinaroute 1.2.0.0/23 ipset add chinaroute 1.2.2.0/24 ipset add chinaroute 1.2.4.0/24 ipset add chinaroute 1.2.5.0/24 ipset add chinaroute 1.2.6.0/23 ipset add chinaroute 1.2.8.0/24 ipset add chinaroute 1.2.9.0/24 ipset add chinaroute 1.2.10.0/23 ipset add chinaroute 1.2.12.0/22 ...
場景二:批量刪除行
這次以GFWList為例,在github上可以下載到dnsmasq版的GFWlist,現在我想把dnsmasq的命令去掉,只保留域名,方便向路由器或者PAC或者代理外掛中直接新增,原始檔樣式如下:
server=/.4tern.com/127.0.0.1#5353
ipset=/.4tern.com/gfwlist
server=/.85.17.73.31/127.0.0.1#5353
ipset=/.85.17.73.31/gfwlist
server=/.adorama.com/127.0.0.1#5353
ipset=/.adorama.com/gfwlist
server=/.agnesb.fr/127.0.0.1#5353
ipset=/.agnesb.fr/gfwlist
server=/.akiba-web.com/127.0.0.1#5353
ipset=/.akiba-web.com/gfwlist
server=/.alien-ufos.com/127.0.0.1#5353
ipset=/.alien-ufos.com/gfwlist
server=/.altrec.com/127.0.0.1#5353
ipset=/.altrec.com/gfwlist
server=/.arena.taipei/127.0.0.1#5353
ipset=/.arena.taipei/gfwlist
這個檔案有9000多行,因為每個域名重複了兩次,所以我們先刪掉一次,如下圖
注意,這裡正則表示式末尾的\n是用來刪除空白行的,如果不寫\n那麼整個待刪行會變成一個空白行,刪除完之後如下
ipset=/.4tern.com/gfwlist
ipset=/.85.17.73.31/gfwlist
ipset=/.adorama.com/gfwlist
ipset=/.agnesb.fr/gfwlist
ipset=/.akiba-web.com/gfwlist
ipset=/.alien-ufos.com/gfwlist
ipset=/.altrec.com/gfwlist
ipset=/.arena.taipei/gfwlist
ipset=/.asianspiss.com/gfwlist
ipset=/.athenaeizou.com/gfwlist
ipset=/.azubu.tv/gfwlist
ipset=/.barracuda.com/gfwlist
ipset=/.beeg.com/gfwlist
ipset=/.bloombergview.com/gfwlist
ipset=/.boysmaster.com/gfwlist
ipset=/.carfax.com/gfwlist
ipset=/.casinobellini.com/gfwlist
...
然後只需要把每行前面的ipset=/和後面的/gfwlist刪掉,只保留中間部分即可,方法如下圖
然後就只剩下網站的根域名了,可以匯入到路由器中去,效果如下
4tern.com
85.17.73.31
adorama.com
agnesb.fr
akiba-web.com
alien-ufos.com
altrec.com
arena.taipei
asianspiss.com
athenaeizou.com
azubu.tv
barracuda.com
beeg.com
bloombergview.com
boysmaster.com
carfax.com
casinobellini.com
centauro.com.br
images.comico.tw
...
場景三:去除錯誤資料
在上面的例子中,有一些錯誤資料比如第二行85.17.73.31並不是一個域名,而是一個IP地址,我們可以使用普通IP地址正則將這些錯誤資料去掉,方法如下圖
點選“Replace All”就可以把這些錯誤行都刪掉