2011-11-17 4 views
1

Je cherche un code awk one-liner pour trouver la différence entre une date et un système. Le format de l'heure est comme suit: 16: 13: 04,699 Je veux la différence en minutes. Je ne suis pas très familier avec awk, je peux calculer cette différence en écrivant un script mais je veux le faire en une ligne.Différence de temps en utilisant awk

Merci.

+1

comment comparer un horodatage sans rendez-vous avec la date du système? – Kent

+0

Au début vous devez obtenir le jour en cours mois année, alors vous devez ajouter cela à votre timestap incomplète, alors vous devez convertir cette chaîne à l'époque, prendre la différence avec l'heure actuelle du système, enfin calculer la différence en minutes . Je suis d'avis que cela ne peut pas être fait facilement avec un seul paquebot. Si vous savez déjà comment faire, utilisez votre script ou montrez-nous ce que vous avez fait jusqu'à présent. – Chris

+0

@Chris awk un revêtement peut le faire. aussi longtemps que l'heure donnée a aussi une date. – Kent

Répondre

4

Pas exactement un one-liner:

awk -v 'time=16:13:04,699' -v "date=$(date +%H:%M:%S)" ' 
    function abs(x) {return x<0 ? -x : x} 
    BEGIN { 
    split(time, ary, /[:,]/); t_sec = 3600*ary[1] + 60*ary[2] + ary[3] 
    split(date, ary, /:/); d_sec = 3600*ary[1] + 60*ary[2] + ary[3] 
    # output difference in minutes 
    print abs(t_sec - d_sec)/60 
    } 
' 
+0

Très utile. Je vous remercie. – Stewart