如何解决匹配所有行中包含相同前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 ,请点击过滤器工具栏中的高级过滤器按钮。
在高级过滤器对话框中,在列表中输入以下三种IP地址CDIR表示法:
10.10.0.0/16
142.58.0.0/16
108.252.0.0/16
并确保为列表中的所有项目设置了数字范围和逻辑上的逻辑与(OR)至先前条件选项。点击过滤器按钮。
然后,您可以点击过滤器工具栏中的全部提取按钮以获取预期结果(matched.txt)。
要提取不匹配项,请再次点击过滤器工具栏中的高级过滤器按钮,选择列表中的所有项目,然后设置否定选项,然后将逻辑求和(OR)清除为以前的条件选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。