PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Uhrzeiten im Shell-Script addieren?



Gartenzwerg
16-05-2004, 14:37
Hi,
ich habe eine Datei mit Zeiten im folgenden Format "hh:mm:ss". Gibt es einen Befehl diese zu addieren oder muss ich da selbst etwas schreiben?

Tschau Gartenzwerg

RapidMax
16-05-2004, 16:19
Mir war eigentlich in Erinnerung, dass Date das kann, aber ich habe es nicht hingekrigt. Bleibt also noch das awk-Script:

awk -F ":" 'BEGIN{seconds=0}
{seconds+=$1*3600+$2*60+$3}
END{print int(seconds / 3600) ":" int(seconds % 3600 / 60) ":" (seconds % 60)}
Gruss, Andy

Gartenzwerg
16-05-2004, 16:45
danke schön! Funktioniert super!

Tschau Gartenzwerg

ThorstenS
25-05-2004, 12:47
Man könnte Zeile für Zeile in Sekunden umwandeln und dann aufaddieren:

$ export STD=20
$ export MIN=10
$ export SEC=12
$ date --date="1970-01-01 00:00:00 UTC +$STD hours +$MIN minutes +$SEC seconds" +%s
72612

Leicht nachzurechnen mit echo "20 * 60 *60 + 10 * 60 + 12" | bc

Obwohl die awk Lösung von RapidMax einfach genial ist :cool: , poste ich mal einen Versuch mit date zum Umrechnen:



#/bin/bash
function readfile()
{
local File=$1
local SaveTo=$2
local -i counter=0
#
while read line; do
eval "$2[$counter]"=\'$line\'
counter=$(($counter+1))
done < $File
#
eval "$3"=$counter
}
Sekunden=0
Summe=0
# In der Datei Zeiten sind die Zeiten zeilenweise in der Form hh:MM:ss abgelegt
readfile Zeiten Inhalt Anzahl
for ((i=0; i<$Anzahl; i++));do
STD=$(echo ${Inhalt[i]}| awk -v FS=':' '{print $1}')
MIN=$(echo ${Inhalt[i]}| awk -v FS=':' '{print $2}')
SEC=$(echo ${Inhalt[i]}| awk -v FS=':' '{print $3}')
Sekunden=$(date --date="1970-01-01 00:00:00 UTC +$STD hours +$MIN minutes +$SEC seconds" +%s)
Summe=$(/usr/bin/expr $Sekunden + $Summe )
done
echo "Die Summe der Zeiten beträgt $Summe Sekunden"


P.S.
Hier hab ich mal ein wenig Info über date verweigt:
http://www.linuxforen.de/forums/showthread.php?t=84176