zoukankan      html  css  js  c++  java
  • 在linux下用awk分析日志文件

    今儿刚坐下不久,领导就发话了,在这么个文件中找到开头为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
     
    成。
  • 相关阅读:
    计算闰年
    三个数比较大小
    剪刀石头布编辑
    二进制转换,八进制,十六进制转换
    原来我学的还是不够。。。
    认知是一切的基础
    spark学习笔记-java调用spark简单demo
    spark学习笔记-RDD
    Sublime Text3时间戳查看转换插件开发
    Spring Boot + Freemarker多语言国际化的实现
  • 原文地址:https://www.cnblogs.com/leeqq/p/3936958.html
Copyright © 2011-2022 走看看