awk -F, 'BEGIN { OFS=FS=","; }
{
seconds=substr($1, index($1, ".")-2, 10);
ms=substr(seconds, 7);
seconds=substr(seconds, 1, 6);
if (ms > 5000)
seconds += 0.001;
$1=sprintf("%s%6.3f", substr($1, 1, index($1, ".") - 2), seconds);
print
}' < input
Isso simplesmente força os campos timestamp do primeiro parâmetro e verifica se o tempo deve ser arredondado ou não. Com o novo valor de tempo em mãos, ele reagrupa o campo de registro de data e hora de volta em $1
e imprime a nova linha.