linux-l: Wochentag in awk

Ralf Balzer mail at ralf-balzer.de
Fr Jun 9 12:22:18 CEST 2000


Hallo Oliver,

> 
>....
> Du ja wohl offensichtlich ohnehin mit der bash arbeitest, kann
> ich eigentlich nur empfehlen, gleich von der bash aus date aufzurufen.
> 
Das Problem besteht darin, das ich das Ergebnis in awk weiterverarbeiten 
will, genauer : 

LogDatei mit Datum/Uhrzeit > awk > Auswertung Stunden pro Wochentag.

Inzwischen habe ich eine allerdings sehr langsame Lösung mit mehrfachen
awks. Das sieht dann so aus :

grep $MONAT /var/log/isdn.log | \
        grep $lognum | \
        awk -v Provider="$provider" ' \
                { Jahr = substr($4,1,4) } \
                { S = "echo -e \"\`date -d \"" $1 " " $2 " " Jahr "\"
+%a\` \\c\"" } \
                { system( S ) } \
                { printf "%s %s %s %s %s \n", $1, $2, Jahr, $3,
substr($7,1,length($7)-1) } ' | \
        awk -v Provider="$provider" ' \
                { printf "%s %s %s %s ", $2, $3, $5, $6  } \
                { stunde = int(substr($5,1,2)) } \
                { S = ". /root/bin/lcr -ak -s " Provider " -w " $1 " -h
" stunde } \
                { system( S ) } ' | \
        awk ' \
                BEGIN {SUMME=0; GesamtZeit=0 } \
                { dauer  = $4-'$MinTime' }\
                dauer < 0 { dauer = 0 } \
                { stunde = int(substr($3,1,2)) } \
                { min    = int(dauer/60) } \
                { sec    = dauer-(min*60) } \
                { betrag =
(int((dauer)/'$chargetime')+1)*$5*('$chargetime'/60)}  \
                (stunde>='$VonStunde') && (stunde<='$BisStunde') \
                        { SUMME += betrag; GesamtZeit += dauer; printf
"%2s %s %s %s %3s:%02s %6.2f\n", $2, $1, $3, $5, min, sec, betrag} \
                END {min = int(GesamtZeit/60); sec=GesamtZeit-min*60; \
                        printf "Summe :               %4s:%02s %6.2f bei
MinTime=%s\n",min, sec, SUMME,'$MinTime'}'

Zur Erklärung : 
  /root/bin/lcr sucht den minutenpreis aus einer Providerdatei
Das ganze dient der Abrechnungskontrolle der Internetprovider,
weil ich irgendwie mit isdnlog und der Tarif-Abrechnung nicht klarkomme.
Ist für isdnlog vielleicht inzwischen auch ein bischen zu kompliziert, 
weil ja keine Takte übertragen werden.

Wenn Dir/Euch noch etwas einfällt dazu, dann seid Ihr herzlich
eingeladen,
diese Ideen mit mir zu teilen.

mfg

Ralf Balzer



Mehr Informationen über die Mailingliste linux-l