Backup-Log-File zerlegen

WiZdooM

Erfahrenes Mitglied
Hallo

ich versuche mich gerade daran ein logfile unserer Datadomain zu zerlegen. Und zwar besteht jeder entry im Logfile aus diesen 8 Zeilen:


Code:
------ 17.11.2009 ; 15:29:24,27 
Resource             Size GiB   Used GiB   Avail GiB   Use%   Cleanable GiB*
------------------   --------   --------   ---------   ----   --------------
/backup: pre-comp           -     1208.2           -      -                -
/backup: post-comp      345.2      157.4       187.8    46%              0.0
/ddvar                   19.7        1.6        17.0     9%                -
------------------   --------   --------   ---------   ----   --------------
 * Estimated based on last cleaning of 2009/11/17 06:38:25.


Ich jage hierfür das Logfile zeilenweise durch einen Streamreader. Das Datum (17.11.2009) habe ich mit RegEx schon rausholen können.
Code:
Regex dateEx = new Regex(@"(\d{2}.\d{2}.\d{4})");

Ich habe aber Probleme mit den beiden Zeilen pre-comp und post-comp. Dadurch dass ich Logfiles von mehreren DD auswerten muss, kann ich leider nicht mit Substring arbeiten, da die Gigabytemengen sehr stark variieren (auf der einen DD sinds zwischen 750GB und 1500GB, auf einer anderen ~23500GB.

Konkret bräuchte ich hier die Werte UsedGiB (1208.2 bzw 157.4) und Avail GiB (187.8).

Hat jemand vielleicht eine Idee, wie ich diese Werte möglichst universell für alle Logs rausholen kann?
 

Shakie

Erfahrenes Mitglied
Trenn jede Zeile in ein Array auf und verwende das Leerzeichen als Trennzeichen; leere Array-Einträge entfernst du:
C#:
String[] stringarray = Zeile4.Split(' ',StringSplitOptions.RemoveEmptyEntries);
String UsedGIB = stringarray[3];
Im Array sollte dann folgendes stehen (hab's nicht getestet):
C#:
stringarray[0] == "/backup:"
stringarray[1] == "pre-comp"
stringarray[2] == "-"
stringarray[3] == "1208.2"
...
 
Zuletzt bearbeitet:

WiZdooM

Erfahrenes Mitglied
hey,

Danke! Die Zeile in ein Array zu splitten war mir auch schon in den Sinn gekommen, aber die StringSplitOptions.RemoveEmptyEntries-Property war mir nicht bekannt und ich wollte nicht anfangen Arrays rumzukopieren....