Create function to extract data from .log file

Dear all,
I want to write a function can extract data from log file. It like that
The number marked yellow is the number what I want to output and then used to do the calculate. I would really appreciate that if anyone can provide any help.
Thanks in advance.

 採用された回答

Walter Roberson
Walter Roberson 2017 年 9 月 28 日

1 投票

S = fileread('NameOfYourLogFileGoesHere.log');
value_of_interest_string = regexp('(?<=it\.it-nin\.icytot\.nrep2\.mtfail\.IMPES:\s*)\S+', 'match');
value_of_interest = str2double(value_of_interest_string);
This code does not assume that the value is an integer, just that it appears after the mtfail.IMPES: string and ends in whitespace.

7 件のコメント

Cedric
Cedric 2017 年 9 月 28 日
編集済み: Cedric 2017 年 9 月 28 日
It would probably work with the shorter pattern:
'(?<=IMPES:\s*)\S+'
Walter Roberson
Walter Roberson 2017 年 9 月 28 日
Probably Yes ;-) But just in case there is another IMPES: in the file...
Cedric
Cedric 2017 年 9 月 28 日
編集済み: Cedric 2017 年 9 月 28 日
That's not IMPESsible! ;-)
haisheng yu
haisheng yu 2017 年 9 月 28 日
Thanks a lot. I just run this code return the NaN. I will take a look of the regexp function. Thanks again.
Cedric
Cedric 2017 年 9 月 28 日
編集済み: Cedric 2017 年 9 月 28 日
There is a typo that I didn't spot: the first argument in the call to REGEXP should be the content to parse, which is variable S. Try with the following:
S = fileread('NameOfYourLogFileGoesHere.log');
value_of_interest_string = regexp(S, '(?<=it\.it-nin\.icytot\.nrep2\.mtfail\.IMPES:\s*)\S+', 'match');
value_of_interest = str2double(value_of_interest_string);
and/or with the simpler pattern that I proposed:
S = fileread('NameOfYourLogFileGoesHere.log');
value_of_interest_string = regexp(S, '(?<=IMPES:\s*)\S+', 'match');
value_of_interest = str2double(value_of_interest_string);
haisheng yu
haisheng yu 2017 年 9 月 28 日
Thanks a lot. It really help a lot. I also solved a way
Str = fileread('WH Generated path_09.log');
Key = 'it,it-nin,icytot,nrep2,mtfail,IMPES:';
Index = strfind(Str,Key);
Value =sscanf(Str(Index(1)+length(Key):end),'%g',1);
Walter Roberson
Walter Roberson 2017 年 9 月 28 日
Yes, sorry, I missed the S in the regexp call.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by