Hallo,
ich habe ein Logfile, dass ich analysieren möchte. Und zwar soll immer nur die letzte Stunde genommen werden und nicht das ganze Logfile.
Dies wollte ich mit awk '/075001/,/085001/' logfile realisieren. Zu Beginn des Logfiles steht nämlich in diesem Format die Uhrzeit (auf Shell-Ebene funktioniert das ganze auch wunderbar).
Mein Skript sieht so aus:
my $current = sprintf("%02d%02d%02d",$std, $min, $sek);
my $past = $current - 10000;
### Beide folgenden Varianten werfen den Fehler use of unintialized value ...
#$past = sprintf("0%05d", $past) if($past != /\d{6}/);
#$past = "0$past" if($past !=~ m/\d{6}/);
if($past =~ m/\d{6}/g) {
$past = $past;
}
else {
$past = "0$past";
}
@array=qx{awk '/^$past/,/^$current/'logfile|grep '<pattern>'};
...
Wie kann man das ganze eleganter lösen (vorallem auf die if-else Anweisung bezogen)?
Zudem habe ich das Gefühl, dass der awk in @array nicht jedes Mal korrekt ausgeführt wird, sondern nur manchmal.
D'OH
Daniel