Bonjour,
j'ai un fichier contenant des durées exprimées sous le format 00:00:00.00 et j'aimerai bien convertir ça en nombre de secondes... J'ai fait la fonction suivante :
Code :
- #conversion des durees en secondes
- function TimeInSeconds
- {
- FORMAT='(([0-9]+):)?([0-9]+):([0-9]{2}).([0-9]{2})'
- if [[ $1 =~ $FORMAT ]] ; then
- HH=${BASH_REMATCH[2]:-0}
- MM=${BASH_REMATCH[3]:-0}
- SS=${BASH_REMATCH[4]:-0}
- RR=${BASH_REMATCH[5]}
- echo $(( HH * 3600 + MM * 60 + SS )).$RR
- else
- echo $1
- fi
- }
|
qui marche bien lorsque je l'appelle en passant le paramètre à la main, par exemple comme ça :
TimeInSeconds 43:22.03
ce qui renvoie 2602.03. Mais quand j'essaie de l'appliquer à mon fichier à l'aide de sed, ça foire et c'est le "else" qui est éxécuté. Par exemple :
cat $FILE | sed "s/[0-9:.]*/`TimeInSeconds \&`/g"
va me récrire le contenu du fichier à l'identique... Ca fait plusieurs heures que je suis la dessus et je vais péter les plombs !!!! Merci pour votre aide.
Message édité par souliane le 04-05-2007 à 11:42:29