Eu sou novo no shell script. O coração do meu script é encontrar a diferença entre dois registros de data e hora até milissegundos. Comigo, tenho um arquivo com conteúdo de timestamps apenas como
2012-09-13 15:00:29,290 2012-09-13 15:00:29,297
2012-09-13 15:00:29,428 2012-09-13 15:00:29,447
Assim, tenho cerca de 30 mil registros, onde não devo enfrentar nenhum problema de desempenho ao executar o script. Muitos fatores como ano bissexto, meses com 31 dias, etc. aparecem quando estou tentando escrever um script para isso.
Alguém pode me ajudar nisso, por favor?
text-processing
date
timestamps
Vamshi G
fonte
fonte
Respostas:
Não há necessidade de fazer análises complexas, o date fará toda a mágica para você, com a ajuda de seu amigo, bash :
RESULTADO
Vejo
man date
NOTA
date -d
é muito útil, converte timestamps%s
é o tempo da época (segundos desde 01-01-1970)%N
é nanossegundos$(( ))
e(( ))
é parabash
aritmética, consulte http://mywiki.wooledge.org/ArithmeticExpression$( )
apoiacommand substitution
Isso atende às suas necessidades também?
fonte
Uma linguagem de script como Perl, Python ou Ruby será rápida e exigirá pouco esforço. Por exemplo, com Perl e Date :: Parse :
(Para cada linha, substitua
,
por.
, dividir a linha em palavras$_[0]
através$_[3]
, analisar as datas formados pelos dois primeiros e próximas duas palavras, e imprimir a diferença.)fonte
Acabei de encontrar este post, há - pelo menos hoje - uma
date
solução mais simples . Usando a estrutura na resposta de @Gilles Quenot (teria escrito um comentário à sua resposta, mas não a reputação suficiente):O resultado:
Usar em
%3N
vez de%N
truncará a saída em milissegundos.fonte