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. Problem bei der installation einer Sun Netzwerkkarte

    Problem bei der installation einer Sun Netzwerkkarte: Guten Morgen zusammen, beim installieren einer zusätzlichen Netzwerkkarte habe ich ein Problem. Die Karte wird nicht automatisch installiert. Es...
  3. Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe

    Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe: Liebe Community, zurzeit arbeite ich an eine Active Directory Domäne die mittels Samba läuft. Dazu habe ich einen AD DC auf Debian 8.7 mit Samba...
  4. 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....
  5. 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...