【发布时间】:2011-01-08 01:38:14
【问题描述】:
我目前正在运行一个 awk 脚本来处理一个大型 (8.1GB) 访问日志文件,而且它需要很长时间才能完成。在 20 分钟内,它写入了我期望它写入的 (1000 +- 500)MB 中的 14MB,我想知道我是否可以以某种方式更快地处理它。
这里是 awk 脚本:
#!/bin/bash awk '{t=$4" "$5; gsub("[\[\]\/]","",t); sub(":"," ",t);printf("%s,",$1);system("date -d \""t"\" +%s");}' $1编辑:
对于非 awker,脚本读取每一行,获取日期信息,将其修改为实用程序 date 识别的格式,并调用它将日期表示为自 1970 年以来的秒数,最后将其返回为.csv 文件的一行,以及 IP。
示例输入: 189.5.56.113 - - [22/Jan/2010:05:54:55 +0100] "GET (...)"
返回输出: 189.5.56.113,124237889
【问题讨论】:
-
也许您可以描述脚本的作用,以便我们这些非 awker 可以用另一种语言编写更快的替换?不过乍一看,通过 system() 在每条记录上生成一个新进程肯定很慢。
标签: apache awk large-data-volumes