Ich bin neu im Shell-Scripting. Das Herzstück meines Skripts ist es, den Unterschied zwischen zwei Zeitstempeln bis zu Millisekunden zu ermitteln. Bei mir habe ich eine Datei mit Inhalt von Zeitstempeln nur als
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
Auf diese Weise habe ich ungefähr 30.000 Datensätze, bei denen ich beim Ausführen eines Skripts keine Leistungsprobleme haben sollte. Viele Faktoren wie Schaltjahr, Monate mit 31 Tagen usw. kommen ins Spiel, wenn ich versuche, ein Skript dafür zu schreiben.
Kann mir bitte jemand dabei helfen?
text-processing
date
timestamps
Vamshi G.
quelle
quelle
Antworten:
Sie müssen kein komplexes Parsen durchführen. Date erledigt mit Hilfe seines Freundes die ganze Magie für Sie. Bash :
AUSGABE
Sehen
man date
HINWEIS
date -d
ist sehr nützlich, es konvertiert Zeitstempel%s
ist die Epochenzeit (Sekunden seit dem 01.01.1970)%N
ist Nanosekunden$(( ))
und(( ))
fürbash
Arithmetik siehe http://mywiki.wooledge.org/ArithmeticExpression$( )
steht fürcommand substitution
Passt das auch zu Ihren Bedürfnissen?
quelle
Eine Skriptsprache wie Perl, Python oder Ruby ist schnell und erfordert wenig Aufwand. Zum Beispiel mit Perl und Date :: Parse :
(Ersetzen Sie für jede Zeile
,
durch.
, teilen Sie die Zeile in Wörter$_[0]
durch$_[3]
, analysieren Sie die Daten der ersten beiden und der nächsten beiden Wörter und drucken Sie die Differenz aus.)quelle
Ich bin gerade auf diesen Beitrag gestoßen, es gibt - zumindest heute - eine einfachere
date
Lösung. Verwendung des Frameworks in der Antwort von @Gilles Quenot (hätte einen Kommentar zu seiner Antwort geschrieben, aber nicht genug Ruf):Das Ergebnis:
Wenn Sie
%3N
anstelle von verwenden,%N
wird die Ausgabe auf Millisekunden gekürzt.quelle