Wie angekündigt, hier die erste Frage zu Lua ;) Ich möchte den Inhalt eines LogFiles in einem Table speichern um es dann weiter zu verarbeiten. Also Datei öffnen und zeilenweise lesen ist kein Ding. Nur wie bekomm ich die Daten jetzt ins Table? Meine erste Idee wäre, mit match die Position der Tabs je Zeile zu bestimmen und mit (g)sub die einzelnen Daten raus zuholen. Gibt's da evtl auch eine elegantere Möglichkeit? MfG Hans
Versuch möglichst nicht, Tabs zu suchen und die Zeile dann händisch zu zerschnippeln - ist langsam und fehleranfällig. Deine Freunde sind gsub und match und deren Captures. Hier mal zwei Beispiele:
1 | -- Variable Anzahl Felder, numeriert: lines[zeilen_nummer][feld_nummer] |
2 | local lines = {} |
3 | for line in io.lines"/tmp/logfile" do |
4 | local fields = {} |
5 | string.gsub(line, "[^\t]+", function(s) fields[#fields+1] = s end) |
6 | lines[#lines+1] = fields |
7 | end |
1 | -- Feste Anzahl Felder, benamt: lines[zeilen_nummer].time/.level/.msg |
2 | local lines = {} |
3 | for line in io.lines"/tmp/logfile" do |
4 | local a,b,c = string.match(line, "^(.-)\t(.-)\t(.*)") |
5 | if a then |
6 | lines[#lines+1] = { time=a, level=b, msg=c } |
7 | -- lines[#lines+1] = { a,b,c } -- numeriert, 1, 2 und 3 |
8 | end |
9 | end |
Hi und danke für foobar für deine Antwort. Habe mir jetzt mit einer string.split Funktion, die ich im Netz gefunden hab eine kleine Routine geschrieben und als Return bekomm ich ein table , wie ichs brauch: numerische Indizes, und jedes Indizes beinhaltet als table eine zerlegt Logfilezeile. Kann den Code hier, wenn gewünscht, hoch laden. Ist nicht viel ;) Grüße Hans
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.