免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1429 | 回复: 3
打印 上一主题 下一主题

[文本处理] 某企业大数据量文件检索上机题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-12 11:08 |只看该作者 |倒序浏览
在一个目录中有很多的日志文件,然后根据ip, 开始时间,结束时间条件来查询,然后把查询出来的符合条件的日志给放到一个文本中。

日志结构为:2012-09-22 15:15:12: - 211.103.3.101    http://112.21.186.68/sh.189.cn/image/common/index_logo.jpg

我写shell脚本为
#!/bin/sh
FILE_LOG=/mnt/guider/
ip_1=$1
start=$2
end=$3
sT=$(date +%s -d "$start")
eT=$(date +%s -d "$end")
fileName=$4
rm -rf "$fileName"
for file_a in ${FILE_LOG}/guider*.log; do
while read line;do
ip=$(echo $line|awk -F: '{print $1":"$2":"$3""$4":"$5}' |awk '{print $4}')
Time=$(echo $line|awk -F: '{print $1":"$2":"$3""$4":"$5}' |awk '{print $1,$2}')
oT=$(date +%s -d "$Time")
if [ $ip = "$ip_1" ] && [ $oT -ge $sT ] && [ $oT -le $eT ]; then
  echo "$line" >> "$fileName"
fi
done<${file_a}
done

问一下高手是否还有优化的余地,比如数据量很大的情况下,一行一行的读取效率太低,有没有提高效率的方法。


论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2012-10-12 11:41 |只看该作者
本帖最后由 rdcwayx 于 2012-10-12 13:43 编辑

恩,有很大的改动余地。

你直接提出部分源日志文件和你想要的结果吧,

论坛徽章:
0
3 [报告]
发表于 2012-10-12 13:19 |只看该作者
部分原日志放在guider.log中,比如:
2012-07-04 11:30:32: - 223.68.145.218        http://183.213.5.35/bbs1.people.com.cn/css/images/jiao.gif
2012-07-04 11:30:32: - 223.68.145.218        http://183.213.5.36/image.yigao. ... 7/1339128102710.gif
2012-07-04 11:30:39: - 223.68.145.218        http://183.213.5.36/society.peop ... 012wb/images/bg.jpg
2012-07-04 11:30:39: - 223.68.145.218        http://183.213.5.35/bbs1.people.com.cn/css/images/jiao.gif
2012-07-04 11:30:41: - 223.68.145.218        http://183.213.5.36/image.yigao. ... 7/1339128102710.gif
2012-07-04 11:30:53: - 223.68.145.218        http://183.213.5.36/society.peop ... 012wb/images/bg.jpg
2012-07-04 11:30:54: - 223.68.145.218        http://183.213.5.35/bbs1.people.com.cn/css/images/jiao.gif
2012-07-04 11:30:56: - 223.68.145.218        http://183.213.5.36/image.yigao. ... 7/1339128102710.gif
2012-07-04 11:30:58: - 223.68.145.218        http://183.213.5.36/society.peop ... 012wb/images/bg.jpg
2012-07-04 11:30:59: - 223.68.145.218        http://183.213.5.35/bbs1.people.com.cn/css/images/jiao.gif

要的结果就是把符合条件的日志给展示出来,比如:
2012-09-22 15:15:09: - 211.103.3.101 http://112.21.186.68/sh.189.cn/image/common/index_logo.jpg 2012-09-22 15:15:11: - 211.103.3.101 http://112.21.186.68/sh.189.cn/image/common/index_logo.jpg 2012-09-22 15:15:11: - 211.103.3.101 http://112.21.186.68/sh.189.cn/image/common/index_logo.jpg 2012-09-22 15:15:12: - 211.103.3.101 http://112.21.186.68/sh.189.cn/image/common/index_logo.jpg 2012-09-22 15:15:14: - 211.103.3.101

论坛徽章:
0
4 [报告]
发表于 2012-10-12 17:42 |只看该作者
  1. awk -F"http" -vip="223.68.145.218" '{match($1,ip);print "http"$2"\t"$1}' guider.log
复制代码
给的数据有限,只能这样猜一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP