Anwendungs-Software und Apps 14.489 Themen, 73.614 Beiträge

Textdatei - 2 Begriffe in aufeinanderfolgenden Zeilen suchen?

InvisibleBot / 15 Antworten / Baumansicht Nickles

Hallo,

hab ein kleines Problem mit einer Log-Datei. Das ist ein riesiger Haufen Text, hab es momentan in einem Word-Dokument, da sind es 1400 (!!) Seiten. Die Software von der die Log-Daten stammen erlaubt auch keine Filterung, nur den Export als Text.

Das Problem ist dass ich darin ein bestimmtes Ereignis eines bestimmten PC finden muss - nur leider steht der PC-Name nicht in derselben Zeile wie der Ereigniscode, sondern eine Zeile darunter. Und das Ereignis gibts einige hundert Mal, von den verschiedensten PCs. Wenn ich einfach danach suche bin ich wahrscheinlich in Rente bis ich den gesuchten Eintrag finde. Und zu allem Überfluss steht in der Zeile mit dem Ereigniscode vorher das Datum und die Uhrzeit. Das sieht so aus:

Host: PG178
17.10.2011 10:45:18 | Event: XXX  

Darunter sind dann jeweils noch mehrere Zeilen mit näheren Details zum Ereignis.
 
Weiß jemand eine Möglichkeit, Text so zu durchsuchen dass ich 2 Begriffe definieren kann die in direkt aufeinanderfolgenden Zeilen vorkommen?







- Beat the machine that works in your head! -
bei Antwort benachrichtigen
Olaf19 InvisibleBot „Textdatei - 2 Begriffe in aufeinanderfolgenden Zeilen suchen?“
Optionen

Grüß dich Bot,

Gäbe es eine Möglichkeit, den Text des Logfiles in eine Tabellenkalkulation zu übernehmen? Du könntest dann in einer Nebenspalte mit WENN-Abfragen zum Ziel kommen.

Steht der Inhalt des Logfiles z.B. in Spalte A, könnten in B die Formeln stehen, Beispiel Zelle B99:
WENN(A99="PC-name";A98;"")

Sobald der PC-Name in einer Zeile gefunden wird, gibt die Formel den Wert der Zelle eine Zeile darüber aus. Das wäre dann das dazugehörige Ereignis. Andernfalls wird nichts ausgegeben, daher das ;"" am Ende der Fomel (würde man darauf verzichten, würde die Fomel immer FALSCH ausgeben, wenn in A nicht der PC-Name steht).

HTH
Olaf

Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
InvisibleBot Olaf19 „Grüß dich Bot, Gäbe es eine Möglichkeit, den Text des ...“
Optionen
Gäbe es eine Möglichkeit, den Text des Logfiles in eine Tabellenkalkulation zu übernehmen?
Hmm, sag Du es mir. Lächelnd Als Plain Text gespeichert ist das Ergebnis eine 3,7MB große Textdatei. Die wollte ich jetzt grad mal in LibreOffice importieren, mit Leerzeichen als Feldtrenner. Das Ergebnis war dass er ein paar Minuten gerödelt hat und anschließend ist LibreOffice kommentarlos abgestürzt. War wohl etwas zu groß, der Happen... Überrascht

Aber zielführend ist das wohl auch nicht, weil er dann Zeilenumbrüche nicht als Trenner behandelt und Worte aus verschiedenen Zeilen in einer Zelle zusammenfügt. Hab keine Möglichkeit gefunden 2 verschiedene Zeichen (Leerzeichen UND Zeilenumbruch) als Feldtrenner zu kombinieren, geht das irgendwie?

Ich hab auch schon versucht die Datenmenge mit einem Batchscript einzudampfen, also insofern dass ich alle Einträge rauswerfe die nicht von dem PC stammen um den es mir geht. Da komme ich aber nicht so recht weiter, u.a. weil die einzelnen Log-Einträge unterschiedlich lang sind - so zwischen 5 und 8 Zeilen.Brüllend


- Beat the machine that works in your head! -
bei Antwort benachrichtigen
gelöscht_101060 InvisibleBot „Hmm, sag Du es mir. Als Plain Text gespeichert ist das ...“
Optionen

Hi Invisible,

ich hätte einen Vorschlag - schnapp dir mal das Programm Notepad++ (gibbet u.a. unter http://www.chip.de/downloads/Notepad_12996935.html) und schau dir nach dem Laden mal an, wie das Teil die Datei darstellt.

Hintergrund - der Editor versteht sich auf relativ viele Programmiersprachen und hebt so z.B. selbstständig gewisse Syntaxe / Ausdrücke farblich hervor; auch sind "Batch-Manipulationen" von Dokumenten Ratz-Fatz möglich.

Was ich mir bei dir hier vorstellen könnte, wäre die Anwendung der "inkrementellen Suche" - du suchst hier zuerst nach einem Suchstring, welcher dann farblich markiert wird und dann nach dem nächsten Suchstring, welcher wiederum anders farblich markiert wird (die Farbe des ersten bleibt bestehen)....

Vielleicht hilft es dir ja - btw - was für eine Log-Datei ist das denn bzw. von was für einem System wird sie denn generiert?

BG,

Bergi2002

bei Antwort benachrichtigen
InvisibleBot gelöscht_101060 „Hi Invisible, ich hätte einen Vorschlag - schnapp dir mal ...“
Optionen

Hatte heute nachmittag keine Zeit mehr, ich versuche es morgen mal.

Die LOG-Datei stammt vom Server einer uralten auf DOS basierenden Warenwirtschaftssoftware. Und die Firma die diese Software geschrieben hat gibts nicht mehr - genauso wenig wie einen Mitarbeiter der sich wirklich damit auskennt. Und nun gibts - sagen wir mal vorsichtig - Unstimmigkeiten beim Lagerbestand. Geld

- Beat the machine that works in your head! -
bei Antwort benachrichtigen
Olaf19 InvisibleBot „Hmm, sag Du es mir. Als Plain Text gespeichert ist das ...“
Optionen
Als Plain Text gespeichert ist das Ergebnis eine 3,7MB große Textdatei. Die wollte ich jetzt grad mal in LibreOffice importieren, mit Leerzeichen als Feldtrenner. Das Ergebnis war dass er ein paar Minuten gerödelt hat und anschließend ist LibreOffice kommentarlos abgestürzt.

Wie bist du da genau vorgegangen - hast du zuerst einmal OOcalc geöffnet? Denn andernfalls, z.B. über die Option "Öffnen mit..." plus Auswahl OpenOffice würde ja mit einiger Sicherheit der OOwriter herangezogen werden, was normalerweise ja auch die erste Wahl für einen Text wäre, nur in diesem Fall eben nicht.

Na gut, vielleicht klappt der Tipp von Borlander besser...

CU
Olaf
Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
InvisibleBot Nachtrag zu: „Hmm, sag Du es mir. Als Plain Text gespeichert ist das ...“
Optionen

Hab zuerst LibreOffice Calc geöffnet und damit dann versucht die Textfile zu importieren.

- Beat the machine that works in your head! -
bei Antwort benachrichtigen
Olaf19 InvisibleBot „Hmm, sag Du es mir. Als Plain Text gespeichert ist das ...“
Optionen

Tja, so hätte ich es auch versucht... schade, dann stößt Calc damit an seine Grenzen.

Schön, dass wenigstens Borlanders Tipp funktoniert hat. THX für die Rückmeldung.

Greetz
Olaf

Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
mawe2 InvisibleBot „Textdatei - 2 Begriffe in aufeinanderfolgenden Zeilen suchen?“
Optionen

Du könntest den Zeilenumbruch (oder Absatzwechsel) zwischen den zusammenhängenden Zeilen vielleicht irgendwie trickreich entfernen, so dass die Inhalte in einer gemeinsamen Zeile stehen.

Ich persönlich würde aber auch Olafs Vorschlag favorisieren.

Gruß, mawe2

bei Antwort benachrichtigen
Borlander InvisibleBot „Textdatei - 2 Begriffe in aufeinanderfolgenden Zeilen suchen?“
Optionen
grep -zo "Suchstring" Datei

sollte es tun ;-)

bei Antwort benachrichtigen
InvisibleBot Borlander „grep -zo "Suchstring" Datei sollte es tun ;-)“
Optionen

Welcher Suchstring? Ich hab 2...

Und was bewirkt "-zo", ich finde den Schalter in keiner Dokumentation.

- Beat the machine that works in your head! -
bei Antwort benachrichtigen
Borlander InvisibleBot „Welcher Suchstring? Ich hab 2... Und was bewirkt "-zo", ich ...“
Optionen

Mit

grep -zo '^Host: PG178\s17.10.2011 10:45:18 | Event: XXX$' Datei

würde es funktionieren. Ist allerdings noch nicht ganz sauber, weil \s allgemein nach Whitespaces sucht und nicht nach Zeilenumbrüchen. Wobei gerade Zeilenumbrüche durch die unterschiedlichen Codierungen sowieso problematisch wären…

Gruß
Borlander

bei Antwort benachrichtigen
InvisibleBot Borlander „Mit grep -zo '^Host: PG178\s17.10.2011 10:45:18 | Event: ...“
Optionen

Datum und Zeit dürfen nicht Bestandteil der Suche sein, da sie unbekannt sind. Genau darum gehts ja - ist von einem bestimmten PC aus etwas Bestimmtes getan worden, und wenn ja, wann?

Wobei gerade Zeilenumbrüche durch die unterschiedlichen Codierungen sowieso problematisch wären…

Jo, ich versuche sein 2 Tagen mir ein Batchscript zusammenzuklauben mit der ich die ganzen uninteressanten Einträge entfernen kann. Aber dazu kenne ich mich nicht gut genug aus, das Script müsste überprüfen ob in der ersten Zeile was bestimmtes steht (der Hostname):
- wenn ja ab der nächsten Leerzeile weitersuchen 
- wenn nein alles bis zur nächsten Leerzeile löschen.

- Beat the machine that works in your head! -
bei Antwort benachrichtigen
Borlander InvisibleBot „Datum und Zeit dürfen nicht Bestandteil der Suche sein, da ...“
Optionen
Datum und Zeit dürfen nicht Bestandteil der Suche sein, da sie unbekannt sind.

Das ist allerdings kein wirkliches Problem mit Regulären Ausdrücken (RegEx) ;-)

Da müsstest Du den Suchstring so anpassen, dass dort die passenden Ziffern auftreten dürfen…

Wobei mir auch gerade auffällt, dass die Punkte (stehen für beliebige Zeichen) besser noch maskiert werden sollten. So scheint es zu funktionieren:

grep -zo '^Host: PG178\s[0-3][0-9]\.[0-1][0-9]\.[0-9][0-9][0-9][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9] | Event: XXX$' Datei

Das ist aber sicher noch deutlich schöner und sauberer möglich. Dafür müsste man sich aber noch mal umfangreicher mit dem verwendeten RegEx-Dialekt beschäftigen so man den nicht täglich nutzt…

Gruß
Borlander

bei Antwort benachrichtigen
InvisibleBot Borlander „Das ist allerdings kein wirkliches Problem mit Regulären ...“
Optionen

Vielen Dank euch allen, insbesondere an Borlander --> es hat tatsächlich funktioniert!

- Beat the machine that works in your head! -
bei Antwort benachrichtigen
REPI InvisibleBot „Textdatei - 2 Begriffe in aufeinanderfolgenden Zeilen suchen?“
Optionen

Ich könnte Dir als Auswertungssoftware das Tool mtail empfehlen.
Falls die Logdatei im ASCII Format vorliegt, ist das ein Wundertool.
Hier kann man z.B. auch einen Filterstring setzen und gleichzeitig festlegen, wie viele Zeilen er danach mit anzeigen soll.
Kann auch wunderbar benutzt werden, um Logs im laufenden Betrieb zu überwachen und bei  auftreten von bestimmten Strings, vielfältige Alarme auszulösen.

http://ophilipp.free.fr/op_tail.htm

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen