匹配所有行中包含相同前2个块的IP范围并导出结果

如何解决匹配所有行中包含相同前2个块的IP范围并导出结果

使用norepad ++,我只是试图找到一种方法来匹配所有行中具有相同2个块的范围。例如,列表看起来像这样,按字母顺序排序。

10.10.223.255
10.10.232.122
10.5.246.33
108.252.56.36
108.252.99.23
135.236.12.36
142.58.36.36
142.58.88.36
228.36.236.5
69.65.23.46

预期结果:

10.10.223.255
10.10.232.122
108.252.56.36
108.252.99.23
142.58.36.36
142.58.88.36

是否可以在notepad ++上执行此操作?我只需要列表中的前2个八位位组即可使用此正则表达式进行操作:

使用此正则表达式导出

^.*(^\b(?:[0-9]{1,3}\.){1}[0-9]{1,3}\b.).*

替换为:\ 1

现在,我被困在从列表中为匹配的八位字节添加书签。将结果(匹配的和不匹配的)保存到单独的txt文件中是很好的。

任何帮助将不胜感激。

它不仅是notepad ++,也欢迎python,awk,perl,grep。

解决方法

这将获取您的文本文件,对其进行排序,然后进行比较以查找以相同的前两个八位位组开头的所有IP,并为匹配和不匹配的IP创建新文件。

@( SETLOCAL ENABLEDELAYEDEXPANSION
  ECHO OFF
  SET "_SrcFile=C:\Admin\SE\IP_Source.txt"
  SET "_MatchFile=C:\Admin\SE\IP_Match.txt"
  SET "_NoMatchFile=C:\Admin\SE\IP_NonMatch.txt"
  SET "_TmpIP="
  SET "_Matched="
)

CALL :Main

( ENDLOCAL
  EXIT /B
)

:Main
echo 1
  FOR /F "Tokens=1-2* delims=." %%A IN ('
    TYPE "%_SrcFile%" ^| SORT
  ') DO (
    REM Check lastIP if it wasn't already matched
    IF NOT DEFINED _Matched (
      ECHO= !_TmpIP! | FIND /I " %%A.%%B." && (
        ECHO.!_TmpIP!>>"%_MatchFile%"
      ) || ( 
        ECHO.!_TmpIP!>>"%_NoMatchFile%"
      )
    )
    REM Check Current IP to see if it matches
    ECHO= !_TmpIP! | FIND /I " %%A.%%B." && (
      ECHO.%%A.%%B.%%C>>"%_MatchFile%"
      SET "_Matched=1" 
    ) || (
      SET "_Matched="
    )
    SET "_TmpIP=%%A.%%B.%%C"
  )
  REM Check if the last IP was unmatched
  IF NOT DEFINED _Matched ( 
    ECHO.!_TmpIP!>>"%_NoMatchFile%"
  )
GOTO :EOF

这是我的源文件

10.10.232.122
10.10.223.255
10.5.246.33
135.236.12.36
142.58.36.36
142.58.88.36
228.36.236.5
69.65.23.46
108.252.56.36
108.252.99.23
103.24.107.75
103.24.125.33
103.245.16.42

这是Match.txt中的结果:

10.10.223.255
10.10.232.122
103.24.107.75
103.24.125.33
108.252.56.36
108.252.99.23
142.58.36.36
142.58.88.36

这是NotMatched.txt中的结果


10.5.246.33
103.245.16.42
135.236.12.36
228.36.236.5
69.65.23.46

,

如果您使用 EmEditor ,请点击过滤器工具栏中的高级过滤器按钮。

EmEditor - Filter toolbar

高级过滤器对话框中,在列表中输入以下三种IP地址CDIR表示法:

10.10.0.0/16
142.58.0.0/16
108.252.0.0/16

并确保为列表中的所有项目设置了数字范围逻辑上的逻辑与(OR)至先前条件选项。点击过滤器按钮。

EmEditor - Advanced Filter

然后,您可以点击过滤器工具栏中的全部提取按钮以获取预期结果(matched.txt)。

要提取不匹配项,请再次点击过滤器工具栏中的高级过滤器按钮,选择列表中的所有项目,然后设置否定选项,然后将逻辑求和(OR)清除为以前的条件选项。

EmEditor - Advanced Filter

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?