Thread UNIX-Befehle "richtig" in perl anwenden: awk, grep, datum (12 answers)
Opened by Duff at 2007-02-13 09:29

Duff
 2007-02-13 09:29
#74290 #74290
User since
2006-10-06
283 Artikel
BenutzerIn

user image
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:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

View full thread UNIX-Befehle "richtig" in perl anwenden: awk, grep, datum