Azzera filtri
Azzera filtri

Extract numeric fields from a long log file

2 visualizzazioni (ultimi 30 giorni)
Luca Amerio
Luca Amerio il 26 Set 2013
Risposto: Walter Roberson il 26 Set 2013
Hi.
I have a long log file made of many blocks like the following one
Time = 19.419
Courant Number mean: 0.112358 max: 0.729364
DILUPBiCG: Solving for Ux, Initial residual = 0.00202902, Final residual = 7.96821e-06, No Iterations 1
DILUPBiCG: Solving for Uy, Initial residual = 0.0078399, Final residual = 1.04306e-06, No Iterations 2
DILUPBiCG: Solving for Uz, Initial residual = 0.00704655, Final residual = 7.59091e-07, No Iterations 2
GAMG: Solving for p, Initial residual = 0.0245913, Final residual = 0.000711161, No Iterations 2
GAMG: Solving for p, Initial residual = 0.000859937, Final residual = 3.0172e-05, No Iterations 5
time step continuity errors : sum local = 1.62666e-09, global = -2.99489e-13, cumulative = 4.702e-09
GAMG: Solving for p, Initial residual = 0.00108059, Final residual = 4.57517e-05, No Iterations 2
GAMG: Solving for p, Initial residual = 5.2982e-05, Final residual = 7.80645e-07, No Iterations 9
time step continuity errors : sum local = 4.21046e-11, global = -3.72853e-15, cumulative = 4.702e-09
ExecutionTime = 52871.2 s ClockTime = 68177 s
I would like to extract some of these numbers. I tried with textscan but I don't know how to specify the format correctly.
Thank you very much for the help. Luca

Risposte (1)

Walter Roberson
Walter Roberson il 26 Set 2013
LogText = regexp( fileread('YourLogFile.txt');, '\n', 'split');
NumericFields = regexp(LogText, '-?\d[^-+.e0-9]*', 'match');
NumericFields will then be a cell array with one entry per line of the original file (and possibly one extra entry at end of file). Each cell array entry will then be a cell array of strings, one numeric string per entry. So NumericFields{K} will be a cell array of strings, one string per numeric entry on the line.
Note that this has not been made selective about which lines are converted (as you did not give any indication as to which you wanted), so there will be some NumericFields{K} with one entry (e.g., Time line}, some with two (e.g., ExecutionTime line), a number with three per line with the source varieties not distinguished...

Categorie

Scopri di più su Large Files and Big Data in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by