awk multiline Problem

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von dreamYu, 01.03.2006.

  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. Virtualboxproblem

    Virtualboxproblem: Hallo Folgnedes Problem: Ich kann ohne Probleme In Debian-Sid, 64Bit und virtualbox-dkms Unixoide installieren, wenn es sich um eine...
  3. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  4. Problem bei apt-get upgrade (Kali 2.0)

    Problem bei apt-get upgrade (Kali 2.0): Hi, seit paar Tagen habe ich einige Probs. Dachte es sei mal an der Zeit für ein Update und nun tauchen da einige Fehler auf: Es müssen noch 0 B...
  5. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...