Я пытаюсь вычислить время отклика Avg на почасовой основе из файла журнала, который имеет миллионы записей, ниже есть выдержка из журналаCompute Среднее время отклика на почасовой основе
В настоящее время я пытаюсь с созданием temproary файл, который будет иметь строки с уникальным идентификатором и временем начала и окончания времени, а после этого другой скрипт будет работать в этом временном файле на время отклика avg для каждого часа. . Мой сценарий занимает более часа, чтобы создать временный файл.
Есть ли способ нам это сделать быстрее? или лучший скрипт, время которого меньше. Примечание. Эти 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
Спасибо за ваше время!
Это принадлежит на codereview.stackexchange.com. – chepner
Вы работаете в Linux-системе с Gnu awk? –