本帖最后由 WHY 于 2016-3-4 11:50 编辑
改一下,过滤掉文本重复行
基本思路:
1.取IP地址前三列,第3列加上1000,避免按字符排序出错
2.前三列存放到数组,排序
3.遍历数组,相邻两数组比较,前两列相同、第3列相差1或0则认为是连续- @if (0)==(0) echo off
- cscript //nologo //e:jscript "%~0" < a.txt
- pause & exit
- @end
-
- var arr = WSH.StdIn.ReadAll().replace(
- /^(\d+\.\d+\.)(\d+)\.0/mg,
- function(a, b, c){ return b + (c*1 + 1000) }
- ).match(/(\d+\.){2}\d+/g);
-
- arr.sort().push('');
- var s = '', len = arr.length - 1;
-
- for(var i=0; i<len; i++){
-
- var x = arr[i].split('.');
- var y = arr[i+1].split('.');
-
- if(x[0]==y[0] && x[1]==y[1] && (y[2]-x[2]==1 || y[2]-x[2]==0)){
- s += x[2] + ' ' + y[2];
- }else {
- if(s == '') s = x[2];
- var s1 = x[0] + '.' + x[1] + '.' + (s.substr(0,4) - 1000) + '.0';
- var s2 = x[0] + '.' + x[1] + '.' + (s.substr(s.length-4) - 1000) + '.255';
- WSH.Echo(s1 + '-' + s2);
- s = ''
- }
- }
复制代码
|