2013-03-03 2 views
0

Я хочу суммировать общее «Прошедшее время» для «GSA Поиск» только с помощью диез:Я хочу суммировать общее истекшее время через входной текстовый файл?

Ниже мой лог-файл:

WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:975ms SaveSearchID:361 
WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:875ms SaveSearchID:361 
GSA Search = Server:testserver User:gulanand appGUID: wx Elapsed Time:890ms SaveSearchID:361 
GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:887ms SaveSearchID:361 
GSA Search = Server:testserver User: gulanand appGUID: wx Elapsed Time:875.5ms SaveSearchID:361 
GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:877.6ms SaveSearchID:361 

Код я попытался это:

string searchKeyword = "WX GSA Search"; 
      string fileName = @"C:\Users\karan\Desktop\Sample log file.txt"; 
      string[] textLines = File.ReadAllLines(fileName); 

      List<string> results = new List<string>(); 

      foreach (string line in textLines) 
      { 
       if (line.Contains(searchKeyword)) 
       { 
        results.Add(line); 
       } 
      } 

      string x = string.Join(",", results); 
      List<string> time = new List<string>(); 
      Regex regex = new Regex(@"Elapsed Time:(?<timevalue>\d+(?:\.\d)?)ms"); 
      MatchCollection matches = regex.Matches(x); 
      foreach (Match match in matches) 
      { 
       var value = match.Groups["timevalue"].Value; 
       if (!time.Contains(value)) time.Add(value); 
      } 
+0

Вы хотите проанализировать файл журнала ??? Что вы пробовали? Показать код –

+0

Я вижу, что вы скорректировали свой код немного с http://stackoverflow.com/questions/15183740/how-to-calculate-the-total-elapsed-time-through-input-text-file-using -с/15183793 # 15183793. – Casperah

ответ

1

Вот что-то, чтобы вы начали

string text = @"WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:975ms SaveSearchID:361 WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:875ms SaveSearchID:361 GSA Search = Server:testserver User:gulanand appGUID: wx Elapsed Time:890ms SaveSearchID:361 GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:887ms SaveSearchID:361 GSA Search = Server:testserver User: gulanand appGUID: wx Elapsed Time:875.5ms SaveSearchID:361 GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:877.6ms SaveSearchID:361"; 
var elapsedTime = text.ToLower().Split(' ').Where(line => line.StartsWith("time")) 
        .Select(timeLine => decimal.Parse(timeLine.Split(':')[1].Replace("ms",String.Empty))) 
        .Sum(time => time); 

выход в мс: 5380.1

Ahh, я только что заметил, что вы сказали «GSA Search». В этом случае вам сначала нужно отфильтровать «Поиск GSA», а затем применить вышеуказанный код. В вашем коде вы уже делаете это с помощью

string fileName = @"C:\Users\karan\Desktop\Sample log file.txt"; 
      string[] textLines = File.ReadAllLines(fileName); 

      List<string> results = new List<string>(); 

      foreach (string line in textLines) 
      { 
       if (line.Contains(searchKeyword)) 
       { 
        results.Add(line); 
       } 
      } 



    var elapsedTime = results.SelectMany(line => line.ToLower().Split(' ')) 
        .Where(line => line.StartsWith("time")) 
        .Select(timeLine => decimal.Parse(timeLine.Split(':')[1].Replace("ms",String.Empty))) 
        .Sum(time => time); 
+0

Мне нужно рассчитать только для GSA Search не для всего поиска, а после этого их среднее. Заранее спасибо. –

+0

@DorgySharma, вы уже делаете это в своем коде, фильтруя заранее. –

+0

да, это сработало. Большое спасибо. Еще одна вещь, если я хочу, чтобы она была средней, как я подхожу? Могу ли я поместить всю эту сумму в список или массив, а затем вычислить их среднее значение. –

Смежные вопросы