关闭

强大灵活的Sublime3正则替换功能

标签: sublime
640人阅读 评论(0) 收藏 举报

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脚本方便太多,结果如下

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
...
这样把这个文件添加执行权限在Linux中直接运行即可

场景二:批量删除行

这次以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”就可以把这些错误行都删掉

上面的例子文件和转换好的文件上传上来供其他人练习,体会Sublime3强大的正则匹配功能下载地址:http://download.csdn.net/detail/lvshaorong/9713487

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:433613次
    • 积分:5055
    • 等级:
    • 排名:第6147名
    • 原创:143篇
    • 转载:0篇
    • 译文:1篇
    • 评论:188条
    最新评论