grep + regex zum Log parsen

juan_

juan_

König
Hi zusammen,
ich möchte ein Logfile gerne auf eine Stringkombination durchsuchen.
D.h. im Log steht sowas wie:

2016-12-20 10:10:43 ETL started : cxyz
...
...
...
...
2016-12-20 10:15:43 ETL started : avcx

via
grep -n "ETL started : " logfile.txt
komme ich an die Zeilen. Nun möchte ich die Ausgabe gerne weiter verfeinern und nur Zeilen ausgeben, auf denen ein ERROR folgt:


2016-12-20 10:10:43 ETL started : cxyz
...
...
...
...
2016-12-20 10:15:43 ETL started : avcx
ERROR ....
...
...

In dem Fall möchte ich gerne nur den 2. Eintrag angezeigt bekommen. Leider stehen die Strings nicht in einer Zeile, sondern ggfs. mit 50 (oder mehr) Zeilen unterschied (bis zum nächsten ETL started).

HAbt ihr eine Idee?
Gruß,
J.
 
Grundsätzlich sei Dir awk dabei wärmstens empfohlen:
Code:
awk '/ETL started/{L=$0}/ERROR/&&L{print L;L=""}' logfile.txt
 
... oder ganz ähnlich mit sed:
Code:
sed -n -e '/ETL started/h' -e '/ERROR/{g;/./p;}'
 

Ähnliche Themen

AWK Tip gesucht

Mein Server versendet SPAM in Massen

Rollei Mini Wifi Camcorder

Mysteriöser 11.4 Absturz - Maschine läuft, SSH und vor Ort Login unmöglich

Router crash bei Fedora 15!?

Zurück
Oben