软件测试技术交流群 :
1、QQ交流群:群号 429183023
2、添加JeongJinWin,或者扫描头像二维码
背景:日常工作中,可能在Windows下需要对一些文本进行解析,抽取出某种类型的字段、或者特定字符串,在Linux下可能大家都是使用awk命令去解析了,在windows下我们可以借助强大的文本处理器NotePad++来快速的处理。
下面我以一个Nginx配置文件为案例,来进行介绍
案例需求:存在一个Nginx的配置文件 nginx.conf(文件内容附在末尾,大家直接拉倒文章末尾去找就行),需要分析出这个配置文件都监听了那些ip/域名;(注:这里只是问了讲一个例子,大家别关注Nginx配置文件的合法性,为了方便讲解,存在重复的监听ip端口)
第一步:抽取出符合条件的字符串
1、使用Find,找出匹配的字符串。由于listen的ip/域名不一致,所以想要find到所有匹配的数据,就要使用正则匹配。
正则表达式:(listen.*;)
2、匹配之后,将匹配到的字符串全部抽取成单独的一行,并且标记
替换为:\n$1\n
3、再使用NotePad++的标记清除功能,删除掉未匹配到的字符串;
搜索 → 书签 → 删除未标记行。操作之后得到的结果,就是我们需要单独解析出来的字符串了。
第二步:对结果进行去重
参考文章:https://blog.csdn.net/tclwh123/article/details/83421329
方法一:使用 TextFx 插件,安装 TextFx插件,然后选中需要去重的行数据,使用 "TextFx"-"TextFx Tools"-"Sort lines case sensitive/insensitive (at column)",即可完成去重。但是目前新版本的NotePad 插件库已经搜不到 TextFx 插件了,自行安装的话比较麻烦。有兴趣的可以自己去找找 TextFx 插件资源,手动安装试试;
方法二:使用正则表达式进行行去重
1、首先将第一步中生成的结果进行排序(必要的步骤);
2、然后使用正则表达式 ^(.*?)$\s+?^(?=.*^\1$) 进行全局替换
案例文件Nginx.conf
server {listen 172.16.179.131:10086;location / {proxy_pass http://172.16.179.130:10087/;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}server {listen 172.16.179.131:10087;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10086;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10087;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10087;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10087;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10085;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10085;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10085;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}server {listen 172.16.179.131:10084;root /var/www/html/app1/;access_log /var/log/nginx/app1/access.log proxy_format;real_ip_header X-Forwarded-For;set_real_ip_from 172.16.0.0/16;real_ip_recursive on;location / {root /var/www/html/nihao/;try_files $uri $uri/ =404;}
}