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