我正在尝试从具有数百万条记录的日志文件中计算每小时的平均响应时间,下面是日志的摘录
截至目前,我正在尝试创建临时文件,该文件将包含具有唯一 id 和开始时间和结束时间的行,然后另一个脚本将在此临时文件上运行以计算每小时的平均响应时间我的脚本需要一个多小时才能完成创建临时文件。
有什么方法可以让我们更快地做到这一点?或执行时间更短的更好的脚本。注意:这些 UNIQID 不是按顺序出现的。
log file format
2012-06-04 13:04:19,324 UNIQID1
2012-06-04 13:04:20,120 UNIQID1
2012-06-04 13:05:19,324 UNIQID2
2012-06-04 13:06:20,120 UNIQID2
2012-06-04 13:07:19,324 UNIQID3
2012-06-04 13:08:20,120 UNIQID3
2012-06-04 13:08:49,324 UNIQID4
2012-06-04 13:09:50,120 UNIQID4
这是我的代码:
uids=`cat $i|grep "UNIQ" |sort -u` >> $log
for uid in ${uids}; do
count=`grep "$uid" test.log|wc -l`
if [ "${count}" -ne "0" ]; then
unique_uids[counter]="$uid"
let counter=counter+1
fi
done
echo ${unique_uids[@]}
echo $counter
echo " Unique No:" ${#unique_uids[@]}
echo uid StartTime EndTime" > $log
for unique_uids in ${unique_uids[@]} ; do
responseTime=`cat $i|grep "${unique_uids}" |awk '{split($2,Arr,":|,"); print Arr[1]*3600000+Arr[2]*60000+Arr[3]*1000+Arr[4]}'|sort -n`
echo $unique_uids $responseTime >> $log
done
谢谢你的时间!