awk multiline Problem

Diskutiere awk multiline Problem im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Ich habe ein Problem mit der Extrahierung von speziellen Zeilen aus einem Logfile, komm aber einfach nicht auf eine passende Lösung. ?( Es...

  1. #1 dreamYu, 01.03.2006
    dreamYu

    dreamYu Grünschnabel

    Dabei seit:
    01.03.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Ich habe ein Problem mit der Extrahierung von speziellen Zeilen aus einem Logfile, komm aber einfach nicht auf eine passende Lösung. ?(

    Es handelt sich um eine Oracle Alert Logfile, welche so aufgebaut ist:

    ----snip

    Sun Feb 26 04:01:25 2006
    ORA-12981 blablabla
    Sun Feb 26 04:01:27 2006
    ARC0: Archival started
    ARC1: Archival started
    Sun Feb 26 04:01:29 2006
    Thread 1 opened at log sequence 111
    Current log# 2 seq# 122
    Current log# 2 seq# 123
    Sun Feb 26 04:05:11 2006
    ORA-12331 blabla blabla
    Sun Feb 26 04:05:51 2006
    ARC0: Archival started
    ARC1: Archival started
    LGWR: STARTING ARCH PROCESSES COMPLETE

    ----snap

    Wie ist es möglich, nur die Fehlermeldung, welche mit "ORA-xxxxx", und den Timestamp, der sich eine Zeile darüber befindet, zu extrahieren?

    Hier ein Beispiel:
    Sun Feb 26 04:01:25 2006, ORA-12981
    Sun Feb 26 04:05:11 2006, ORA-12331

    Ich bin offen für jeden Tip. Danke im Voraus für die Hilfe!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 ninguno, 01.03.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    so?
    Code:
    grep -A1 ORA- alert.log
     
  4. #3 dreamYu, 01.03.2006
    Zuletzt bearbeitet: 01.03.2006
    dreamYu

    dreamYu Grünschnabel

    Dabei seit:
    01.03.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Gute Idee, nur liefert er dabei die Ziele *unter* dem "ORA-"-String und nicht das Datum *darüber*.

    Ich hab mir auch schon eine andere Variante überlegt, welche zu funktionieren scheint:

    Code:
    for num in $(grep -n "^ORA-" ora-alert.log | cut -d":" -f1);
    do head -$num ora-alert.log | tail -2;
    done
    
    Ergebnis:
    Sun Feb 26 04:01:25 2006
    ORA-12981 blablabla
    Sun Feb 26 04:05:11 2006
    ORA-12331 blabla blabla
    usw.

    Gibt es dafür keine elegantere Lösung?
     
  5. #4 Wolfgang, 01.03.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn du es mit (GNU) grep machen willst, dann ist -B1 die Zeile davor.

    Gruß Wolfgang
     
  6. #5 ninguno, 01.03.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    eine awk lösung
    Code:
    awk '/^ORA-/ {printf "%s %s\n", prev, $0} {prev=$0}' alert.log
     
  7. #6 avaurus, 01.03.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    für dich unwartbar :)...mach's also in Perl, go go go! :)
     
  8. #7 dreamYu, 01.03.2006
    dreamYu

    dreamYu Grünschnabel

    Dabei seit:
    01.03.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Vielen Dank für eure Antworten - eine andere Sichtweise hilft mir sehr, da ich in diesen Bereichen noch relativ wenig Erfahrung hab :)
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 Wolfgang, 01.03.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Perl wär ja zu einfach gelle ;)
    Nene, ich versuchs es mal ganz unerwartet mit sed.
    Vorsicht ungetestet!

    lets go
    Code:
    sed -n -e '/ORA/b;$!N;/\n.*ORA/!D;s/\(.*\)\n\(.*\)$/\2 \1/g;p'  liste
    
    Gruß Wolfgang
     
  11. #9 dreamYu, 01.03.2006
    dreamYu

    dreamYu Grünschnabel

    Dabei seit:
    01.03.2006
    Beiträge:
    4
    Zustimmungen:
    0
    :respekt:
     
Thema:

awk multiline Problem

Die Seite wird geladen...

awk multiline Problem - Ähnliche Themen

  1. sed: multiline: newline ersetzen mit Bedinung

    sed: multiline: newline ersetzen mit Bedinung: Hi Ich habe einen Text, den ich mit sed so umwandeln möchte, dass alle Zeilen, die nicht mit hostname beginnen, mit einem Komma auf die selbe...
  2. Netzwerkproblem ? , wo ud wie suchen

    Netzwerkproblem ? , wo ud wie suchen: Hallo Folgende Problem: Testserver ist i686 Debian-unstable , auf dem läuft primär der apt-proxy apt-cahcer ng. Zugriff im Moment nur per ssh....
  3. Verständnisproblem Samba / LDAP

    Verständnisproblem Samba / LDAP: Hallo zusammen! Ich habe unter Ubuntu 16.04 einen LDAP und Samba Server aufgesetzt. Diese scheinen auch ordnungsgemäß zu funktionieren, sodaß ich...
  4. nginx+php-fpm problem

    nginx+php-fpm problem: Moin, ich hab hier gerade ein Problem und keine Idee mehr woran es liegt. Ich muss wie schon in der Überschrift erwähnt nginx dazu bringen php...
  5. Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen

    Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen: Ich mache gerade meine ersten Schritte mit Linux und würde gerne auf Dateien meines Linuxsystems auch mit Windows zugreifen, ich bin am...