求高人写个脚本在Linux下

来源:百度知道 编辑:UC知道 时间:2024/07/02 23:01:20
下面的是我从系统提出来的LOG ,每个LOG都是以【evIdsAlert】 开始,以【protocol: tcp】结束,但是我提出来的LOG里,大概有10万条,就是说有10万段都是以【evIdsAlert】 开始,以【protocol: tcp】结束。求高人帮写个脚本,要达到的要求是:例子里的是2个LOG

1.把【severity= 】后面那个词组输出到第一列,例子里就是【informational】和【medium】。

2.把【GMT+08:00】前面的2个词组输出到第二列,例子里就是【2009/05/22 10:32:57】和【2009/05/22 10:33:12 】。

3.把【attacker: 】后面的那句话输出到第三列和第四列,例子里就是【addr: locality=OUT 10.110.10.10 port: 443】和【addr: locality=OUT 116.22.254.229 port: 36365】。

4.把【target:】后面的那句话输出到第五列和第六列,例子里的就是【addr: locality=OUT 222.63.30.8 port: 1533】和【addr: locality=OUT 10.110.10.10 port: 80】。

5.把【description=】后面的那个词组输出到第七列,例子里就是【Sametime Activity 】和【SYN Flood DOS 】

其实最终达到的要求就是:

informational 2009-5-22 10:32:57 10.110.10.10 443 116.22.254.229 36365 Sametime Activity

medium 2009-5-22 10:33:12 222.63.30.8 1533 10.110.10.10 80 SYN Flood DOS

输出以上那2行这样的结果就可以了。可能大家有点听不明白,说白了就是要从这一大堆字里面找出关键字做输出就是了。。。<

好玩,我喜欢。等着我捉么捉么

临时记录
cat dataFile | grep 'severity' | sed 's/.*severity=//g' | sed 's/ vendor.*//g'
cat dataFile | grep 'time:' | awk '{print $4" "$5}'
cat dataFile | awk '/^addr/{print $3}/^port/{print $2}' | sed 'N;s/\n/ /g' | sed 'N;s/\n/ /g'
cat dataFile | grep 'description' | sed 's/.*description=//' | sed 's/ id=.*//'

======脚本文件=======
#!/bin/bash
#
#
#dataFile 是原始的数据文件
#最后输出的日志文件是minlog.txt 可以用cat查看
#生成四个临时文件会被删除
#脚本很脆弱没有完善, 另外功能实现感觉也很傻, 等待高手

cat dataFile | grep 'severity' | sed 's/.*severity=//g' | sed 's/ vendor.*//g' > 1_tmpLog.tmplx
cat dataFile | grep 'time:' | awk '{print $4" "$5}' > 2_tmpLog.tmplx
cat dataFile | awk '/^addr/{print $3}/^port/{print $2}' | sed 'N;s/\n/ /g' | sed 'N;s/\n/ /