AWK Tip gesucht

litrax

litrax

Grünschnabel
Hallo Unix- Freunde

ich hab ein Problem bei dem ich nicht weiterkomme:

ISTZUSTAND
Ich suche mir im Moment per Script aus logdateien Fehlermeldungen heraus (mit grep).
Ich gehe dabei mit Excludes vor (-v).
Als ich das Script die ersten paar mal gestartet habe bekam ich alle Fehlermeldungen.
Dann habe ich unwichtige Meldungen in ein Patternfile geschrieben und mit

Code:
cat logfile | /usr/bin/grep -E -v -f pattern_exclude_file > logfile.new

werden diese Patterns jetzt rausgefiltert.

Nun zu meinem eigentlichen Problem bei dem ich noch ein paar Ideen von euch gebrauchen könnte:
Die Logfiles sehen eigentlich so aus:

2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* S T A R T of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log message called from /view/port/vobs/tt/lib/al_1/al_sig.c: #236 keyword: CORE DUMPED
2013-04-19[12:41:35(UTC-01:00)]:E:user: Pid 1023 Uid 1007 Euid 1007 Gid 1002 Egid 1002 Pset pcname:1312
2013-04-19[12:41:35(UTC-01:00)]:E:user: user_type N language 3 user_name user tty ote locale /
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 0 bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: core_dumped() signal 11 cwd: '/home/user'
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* E N D of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* S T A R T of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log message called from /view/port/vobs/tt/lib/al_1/al_sig.c: #236 keyword: CORE DUMPED
2013-04-19[12:41:35(UTC-01:00)]:E:user: Pid 1023 Uid 1007 Euid 1007 Gid 1002 Egid 1002 Pset pcname:1312
2013-04-19[12:41:35(UTC-01:00)]:E:user: user_type N language 3 user_name user tty ote locale /
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 2 (No such file or directory) bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* E N D of Error message *******

Ich filtere jetzt im Patternfile gewisse wiederkehrende Header der Fehlermeldungen raus. Somit bekomme ich folgendes Ergebnis:

2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 0 bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: core_dumped() signal 11 cwd: '/home/user'
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 2 (No such file or directory) bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.

SOLLZUSTAND
Eigentlich ist das für mich nur eine Notlösung, denn was ich eigentlich möchte ist Folgendes:

  • Nehme den ganzen Logfile
  • Unterteile ihn in Teile zwischen "S T A R T of Error message" und "E N D of Error message"
  • Wenn in einem Teil ein Exclude- Pattern nicht gefunden wurde
  • Gebe den ganzen Teil aus
Alternativ:
  • Nehme den ganzen Logfile
  • Wenn in einer Zeile ein Exclude- Pattern nicht gefunden wurde
  • Ermittle alle Zeilen um die gefundene Position von "S T A R T of Error message" bis "E N D of Error message"
  • Gebe die gefundenen Zeilen aus

BEISPIEL

Wenn ich alles bis auf die Zeile:
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.
im Patternfile excludieren würde sollte mir der Befehl oder das Script folgendes ausgeben:
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* S T A R T of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log message called from /view/port/vobs/tt/lib/al_1/al_sig.c: #236 keyword: CORE DUMPED
2013-04-19[12:41:35(UTC-01:00)]:E:user: Pid 1023 Uid 1007 Euid 1007 Gid 1002 Egid 1002 Pset pcname:1312
2013-04-19[12:41:35(UTC-01:00)]:E:user: user_type N language 3 user_name user tty ote locale /
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 2 (No such file or directory) bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* E N D of Error message *******

Übrigens: ich habe schon nach sowas gesucht und kam auch bis zu folgendem AWK- Statement:

Code:
cat logfile | awk '/S T A R T/, /E N D/'

Aber tiefer in awk oder sonstige Befehle reichen meine Kenntnisse jetzt noch nicht.
Bitte gebt mir mal einen Hinweis wie ich solch ein Konstrukt aufbauen könnte.
Ein Lösungsvorschlag wäre auch in Ordnung ;-)

Schönes Wochenende
Litrax
 

Ähnliche Themen

Autostart von X mit google-chrome durch systemd

xrandr: cant open display

Mein Server versendet SPAM in Massen

Shellskript - Fehler in Cron

OpenSuse 12.3 / Tiefschlaf funktioniert nicht

Zurück
Oben