关闭

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

标签: sublime
1143人阅读 评论(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
查看评论

Sublime 高级正则查找替换

在制作HTML模版的时候经常需要将正常的HTML标签替换成模版标签,使用正则查询可以很方便的定位需要替换的位置,如果再加上固定位置的替换,简直就可以瞬间完成大半的工作。 目标 将类似 src="images/banner3.png"这样的语句替换成 s...
  • aerchi
  • aerchi
  • 2015-07-03 11:39
  • 5353

[乐意黎原创] Sublime 使用高级正则查换替换功能实践

有一个需求:把某从mysql 里导出的的数据表 数据里的  Insert语句 转换成 update 语句. 需要把如下的语句: insert into `table` (`ID`, `code`, `detail`) values('1','110000',...
  • aerchi
  • aerchi
  • 2015-07-03 11:00
  • 32540

TestNG 6 发布

TestNG 是一个测试 Java 应用程序的新框架。TestNG 不仅确实强大、创新、可扩展、灵活,它还展示了 Java Annotations(JDK 5.0 中的重大新特性)的有趣应用。 本次发次包含两个重要的特性,其一可以像 使用XML一样使用YAML来指定 test suite。...
  • DL88250
  • DL88250
  • 2011-03-22 14:40
  • 1187

正则的替换功能

package niu.cheng1; //正则的替换功能 //public String replaceAll(String regex,String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。  p...
  • ChengFeiNiu
  • ChengFeiNiu
  • 2015-10-31 20:30
  • 235

Sublime Text 高级替换功能 Demo - 利用正则表达式修改内容

目标:在这些大写缩写(用([A-Z]+:)正则表达式选出)前加一个换行符, 实现每个缩写都独立在一行。 实现方法:使用 Sublime Text的替换功能。在 Replace With 一栏填入\n$1, 点击 Replace All按钮就可以了。$1表示上面那个正则表达式第一个括号内的内容。效果...
  • u013704227
  • u013704227
  • 2016-12-15 13:46
  • 2095

利用正则表达式进行文本替换,编辑工具使用UE

利用正则表达式进行文本替换,编辑工具使用UE 测试文本如下: I HAVE A_DREAM@SS I HAVE A_GOOD_DREAM@S_T I HAVE A GOOD DREAM@S 替换后的结果为: I HAVE SS@A_DREAM I HAVE S_T@...
  • sych888
  • sych888
  • 2016-11-01 21:50
  • 1454

Eclipse正则表达式 替换查找 /* */ 注释

Eclipse正则表达式 替换查找 /* */ 注释 博客分类: java 正则表达式EclipseF#        最近几天用jd-gui反编译了一个springMVC的项目,反编译出来的java文件全部带注释,看着有...
  • yuanyuan_186
  • yuanyuan_186
  • 2013-10-24 23:55
  • 1377

正则表达式 分组命名 替换

利用正则表达式分组替换信息: 源数据 :小明 13800138000 广东省 目的结果:广东省 13800138000 小明匹配:^(?<name>.*)\t(?<phone>.*)\t(?<address>.*)$替换:${address} $...
  • technofiend
  • technofiend
  • 2016-04-27 10:45
  • 2314

Java正则表达式:让分组group()代替replaceAll吧!

今天,在论坛回复贴子时,无意中进一步学到了分组的用法。在之前几个抓取网页并分析获得标题和超链接的时候,为了去除标题和超链接中多余的字符串,我都是使用String方法中的replaceAll. 现在掌握了这个分组,完全可以在获取所需内容时就屏蔽了多余的字符串。下面用例子说话吧!在前段时间,在论坛回复一...
  • zhuche110
  • zhuche110
  • 2008-04-19 23:27
  • 4219

EditPlus强大替换功能

EditPlus 支持以下的正则表达式,可以用于查找,替换和在文件中查找等命令 表达式        说明 \t        制表符. \n ...
  • hellohm_ndsc
  • hellohm_ndsc
  • 2014-05-18 11:27
  • 851
    个人资料
    • 访问:563953次
    • 积分:6067
    • 等级:
    • 排名:第4934名
    • 原创:150篇
    • 转载:0篇
    • 译文:1篇
    • 评论:216条
    最新评论