- 论坛徽章:
- 0
|
在一个目录中有很多的日志文件,然后根据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
问一下高手是否还有优化的余地,比如数据量很大的情况下,一行一行的读取效率太低,有没有提高效率的方法。
|
|