2010-08-05 29 views
3

Existe-t-il un moyen d'obtenir Unix Time avec des nanosecondes avec strftime dans bash?Est-ce que strftime avec nanosecondes est possible dans bash?

Ma ligne pour le temps unix:

<command> | awk '{ print strftime("%s"), $0; }' 

Je ne peux pas utiliser la date +% N parce que la date est évaluée uniquement une fois.

Y a-t-il du travail?

+0

Sous * GNU/Linux * et [tag: bash] V> = 4.2, vous pouvez utiliser 'proc/timerlist' en bash pur ** **, voir l'exemple [elap.bash sur le SO] (http : //stackoverflow.com/a/14110859/1765658) et son [fichier source] (http://www.f-hauri.ch/vrac/cours_truc-et-astuces_2012-04-03/elap.bash) –

Répondre

4

J'ai trouvé une solution à l'aide en lecture. date est mise à jour de cette façon. Pas besoin de strftime.

<command> | while read line; do d=`date +%s%N`; echo $d $line; done 
0

Vous pouvez toujours utiliser date

ls | xargs -IQ date "+%s.%N Q" 

Il suffit de ne pas% dans la sortie ... (mais vous pouvez travailler autour de cela aussi)

+1

I Ne pensez pas que 'xargs' est une bonne solution pour les commandes longues. Selon la page de manuel: "Lorsque vous utilisez l'option -I, chaque ligne lue à partir de l'entrée est mise en mémoire tampon en interne." En pratique, cela signifie que 'xargs' n'exécutera pas' date' avant la fin de la commande entière. Donc, si vous essayez d'horodater la sortie d'un démon ou une commande longue, 'xargs' ne sera pas d'une grande aide. Je suppose que vous pouvez contourner ce problème en n'utilisant pas '-I' et en faisant en sorte que' xargs' exécute un wrapper autour de 'date', mais c'est beaucoup de tracas pour une tâche par ailleurs simple dans bash. – Six