用python或使用Linux终端中的awk命令,处理文件并提取其中的IP地址(文末有代码,可直接使用)

news/2024/11/14 1:41:19/文章来源:https://www.cnblogs.com/newcomer/p/18545140

题目:我有一个日志文件如图所示,我要取出文件中所有的IP地址,以方便我将其加入到防火墙的黑名单中

 



 

代码中所用到的正则表达式介绍:

python使用的正则表达式是:

 对该正则表达式的解释:

\b(?:\d{1,3}\.){3}\d{1,3}\b
  • \b:单词边界。确保IP地址前后不与其他字符连接。
  • (?:\d{1,3}\.):非捕获型分组。匹配1到3个数字,后跟一个点号。
  • {3}:前面的非捕获型分组重复3次,即匹配3个数字和3个点号。
  • \d{1,3}:匹配1到3个数字。
  • \b:单词边界。确保IP地址前后不与其他字符连接。

shell命令行的awk命令使用的正则表达式是:

 对该正则表达式的解释:

[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+
  • [0-9]:表示匹配数字0到9之间的任意一个字符。
  • {1,3}:表示前面的字符可以重复出现1到3次。这里用于匹配每个数字段(每个IP地址由四个数字段组成)。
  • \.:表示匹配点号字符".",需要使用转义符"\"。
  • +:表示前面的字符可以重复出现1次或更多次。


 

python代码(其中涉及三种文件输入方式)

 1 #处理文件并提取其中的IP地址,将结果输入到test1.txt文件中
 2 import re
 3 import sys
 4 file_name = sys.argv[1]
 5 f = open (file_name,"r",encoding='utf-8')
 6 #使用方法:在命令行中使用python 1.py test.txt 
 7 #test.txt是需要处理的文件;1.py为我要操作的文件
8 9 #2、获取需要输入的文件名,并对输入的文件名进行处理。 10 #file_name = input("请输入需要处理的文件名:") 11 #f = open (file_name,"r",encoding='utf-8') 12 13 #3、直接在代码中输入文件名。 14 #f = open("test.txt", "r", encoding='utf-8') 15 16 data = f.readlines() 17 f.close() 18 f1 = open("test1.txt", "w", encoding='utf-8') 19 20 21 for line in data: 22 results = re.findall(r"\b(?:\d{1,3}\.){3}\d{1,3}\b", line) 23 for t in results: 24 25 26 27 #将结果写入到f1的文件中 28 f1.write(t + '\n') 29 f1.close()

 

处理结果,如图所示:

 



 

Linux 终端中使用 awk命令

 

awk "{ match(\$0, /[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+/, ip); if(ip[0] != \"\") print ip[0] }" test.txt

 

处理结果,如图所示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833257.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七次高级语言程序设计作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400110 姓名:阿卜杜拉阿布力克木 1没有问题 2难度有点大,网上搜了之后看了好久才看懂 3也是看了好久才看懂 45没…

从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019

从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019安装内容 数据库版本:SQL Server 2019 企业版 操作系统:CentOS 7.9 配置如下图:安装环境准备 本文演示的Linux发行版是CentOS 7.9。接下来是SQL Server 2019的部署细节,包括安装源的配置、安装SQL Serve…

2024.11.13 Gusare 编程日志

2024.11.13 Gusare 编程日志前言 摆了好多天,没写日志,嘻嘻 最近一直在按顺序刷luogu的题单,刷完了【入门3循环】【入门4数组】【算法1-6 二分】【数据结构1-1 线性表】 看着很多,实际都是手速题,博主是大水比 有个叫许根瑞的家伙和我打赌2024前要是我没上蓝我就得请他吃甜…

如何在微信小程序中使用less开发

VScode的Esay-less插件第一步:直接先在 vscode 安装 easy-less 插件 第二步:点击微信开发者工具的扩展按钮,再点击扩展下的三个小点,选择从已解包的扩展文件夹安装第三步:选择这个less文件夹第四步:设置输出.wxss到这里还差最后一步,因为Easy-less,默认输出的css,但是…

WLAN学习-11.13

来源:1.无线网络发展历程2.WLAN频段类比人:迈的步子大,频率小;迈的步子小,频率大。 迈的步子大,穿墙能力强,适合应用在更加复杂的环境中,用2.4连信号会更好802.11协议介绍

iman——冲刺日志(第一天)

团队成员分工与进度组别 成员 完成的任务 完成任务所用时间 (小时) 剩余时间 (小时)前端 阿依娜孜 完成了“行程总览”页面的设计与制作,实现了页面的基本布局和功能框架。 5 4前端 郭剑敏 完成了“账单管理”页面的设计与开发,包括添加账单记录的功能和行李清单页面的基本框…

关于北航程设考试题目的一点研究

评价 没想到北航程设题竟然这么有实力,难怪会作弊 一种可能是对的做法 不难想到一个贪心,每次都作弊,直到不能作弊时,就停止作弊 然后接下来想到直接二分作弊次数,然后剩下的时间都不作弊,判断就看最终警觉值会不会\(<L\) 仔细一想,因为警觉值应该不能为负数,所以有…

免费云服务器推荐——阿贝云

阿贝云的免费虚拟主机和免费云服务器为我提供了稳定的性能和简便的操作体验,适合个人和小型网站使用。虽然免费资源有限,但其服务质量和性能让我非常满意。强烈推荐给有需求的朋友!访问阿贝云官网申请吧!

golang接收alertmanager的告警并发送钉钉

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.配置钉钉 1.钉钉自定义机器人接入参考文档参考链接:https://open.dingtalk.com/document/orgapp/custom-robot-access2.配置钉钉机器人如上图所示,注册钉钉拉群聊,然后添加“自定义机器人”,并配置自定…

python第八章课后习题

8.4 求微分方程组的数值解 x=-x3-y,x(0)=1,y=x-y3,y(0)=0.5,0<=t<=30,要求画出x(t)和y(t)的解曲线图形,再相平面上画出轨线点击查看代码 import matplotlib.pyplot as plt from scipy.integrate import solve_ivpdef system(t, state):x, y = statedxdt = -x**3 - …

手动安装ROS2

手动安装ROS2本文以ROS2-jazzy作为示例版本,默认已经安装好ubuntu24.04设置区域 确保你的语言环境支持UTF-8。只要系统是UTF-8语言环境,基本没有问题,可以不设置。 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-loc…