在linux下用awk分析日志文件

本文介绍了一种方法,通过使用awk命令从邮件文件中提取特定数据,并将其存储到数据库中。详细解释了如何使用命令行工具处理邮件内容,包括数据提取和数据库插入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今儿刚坐下不久,领导就发话了,在这么个文件中找到开头为To: =?,包在尖括号中的数据存到数据库中。
 
文件如下:
<invitation-noreply@mail.com>
To: =?UTF-8?B?5p2O5LqR5biG?= <wxg2xj@126.com>
Message-ID: <852638217.283379.1382198734518.JavaMail.root@SJSWT46-220.opi.com>
Subject: =?UTF-8?B?5p2O5LqR5biG77yM5oub5ZWG6K+B5Yi4IOmCgOivt+S9oA==?=
 =?UTF-8?B?5oqV6YCSMjAxNOagoeWbreaLm+iBmOiBjOS9jQ==?=
 
首先要想办法提取出数据到文件,然后循环读每一行,并插入到数据库。
 
本人没什么好办法,只好采用awk硬撸…
 
awk '/To: =\?/' filename | awk -F '<' '{print $2}' |awk -F '>' '{print $1}' >> lzq.result
 
方法虽笨,但也取着了……
 
循环读文件每一行有三种方法:本人采用的就是第二种
 
1) while read line
 
do
... $line
done > filename(要循环的文件名)
 
2) cat filename |while read line
do
  ...$line
done 
 
3) for line in 'cat filename'
do
...$line
done
总感觉这个$line很Nb……
 
接下来就要存进数据库了,采用如下命令:
 
mysql -u用户名 -p密码 -h主机名 -e 数据库语句
 
一定要注意单双引号……
 
最终脚本如下。
 
#!/bin/bash
awk '/To: =\?/' filename | awk -F '<' '{print $2}' |awk -F '>' '{print $1}' | while read line
do
mysql -uroot -proot -h 127.0.0.1 -e "insert into test.deny_mail(email) values('$line'); "
done
 
成。

转载于:https://www.cnblogs.com/leeqq/p/3936958.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值