Não é necessário analisar de forma complexa, date fará toda a mágica para você, com a ajuda de seu amigo, bash :
#!/bin/bash
while read d1_1 d1_2 d2_1 d2_2; do
secdiff=$((
$(date -d "$d2_1 $d2_2" +%s) - $(date -d "$d1_1 $d1_2" +%s)
))
nanosecdiff=$((
$(date -d "$d2_1 $d2_2" +%N) - $(date -d "$d1_1 $d1_2" +%N)
))
printf "%s %s - %s %s = %d milliseconds\n" $d2_1 $d2_2 $d1_1 $d1_2 $((
(secdiff * 1000) + (nanosecdiff / 1000000)
))
done < YOUR_FILE.txt
OUTPUT
2012-09-13 15:00:29,297 - 2012-09-13 15:00:29,290 = 7 milliseconds
2012-09-13 15:00:29,447 - 2012-09-13 15:00:29,428 = 19 milliseconds
Veja man date
OBSERVAÇÃO
-
date -d
é muito útil, converte timestamps -
%s
é o tempo época (segundos desde 01-01-1970) -
%N
é nanossegundos -
$(( ))
e(( ))
são parabash
aritmética, consulte link -
$( )
significacommand substitution
Isso também atende às suas necessidades?