искать текстовый файл с помощью c # и отображать номер строки и полную строку, содержащую ключевое слово поиска

Мне нужна помощь для поиска текстового файла (файла журнала) с помощью c # и отображения номера строки и полной строки, содержащей ключевое слово поиска.

    Это небольшая модификация: http://msdn.microsoft.com/en-us/library/aa287535%28VS.71%29.aspx

    int counter = 0; string line; // Read the file and display it line by line. System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt"); while((line = file.ReadLine()) != null) { if ( line.Contains("word") ) { Console.WriteLine (counter.ToString() + ": " + line); } counter++; } file.Close(); 

    Немного поздно в игру на этом, но произошло через этот пост, и я подумал, что добавлю альтернативный ответ.

     foreach (var match in File.ReadLines(@"c:\LogFile.txt") .Select((text, index) => new { text, lineNumber = index+ 1 }) .Where(x => x.text.Contains("SEARCHWORD"))) { Console.WriteLine("{0}: {1}", match.lineNumber, match.text); } 

    Это использует:

    • File.ReadLines , который устраняет необходимость в StreamReader , а также отлично работает с предложением LINQ Where , чтобы вернуть отфильтрованный набор строк из файла.

    • Перегрузка Enumerable.Select, которая возвращает индекс каждого элемента, который вы можете добавить 1 к, чтобы получить номер строки для соответствующей строки.

    Пример ввода:

     just a sample line another sample line first matching SEARCHWORD line not a match ...here's aSEARCHWORDmatch SEARCHWORD123 asdfasdfasdf 

    Вывод:

     3: first matching SEARCHWORD line 5: ...here's aSEARCHWORDmatch 6: SEARCHWORD123 

    Чтобы экспортировать Excel, вы можете использовать формат файла CSV, как писал Пессимист. Если вы не уверены в том, что писать, попробуйте ввести некоторые данные в MS Excel и нажмите «Сохранить как» в меню и выберите CSV в качестве типа файла.

    Соблюдайте осторожность при записи формата CSV-файла, как в некоторых языках по умолчанию для разделения значений не является запятой. Например, в бразильском португальце по умолчанию используется запятая в виде разделителя в виде десятичного разделителя, точка – разделитель тысяч и точка с запятой для разделения значений. Помните культуру, когда пишете это.

    Другой альтернативой является использование горизонтальных вкладок в качестве разделителей. Попробуйте написать строку, нажмите клавишу TAB, а затем еще одну строку и вставьте ее в Microsoft Excel. Это разделитель по умолчанию в этой программе.

    Если вы используете специальное решение для своей конкретной проблемы, либо альтернативы можно использовать, не задумываясь. Если вы программируете что-то, что будет использоваться другими людьми (или в других средах), учитывайте различия в культуре.

    О, я только что вспомнил: вы можете написать таблицу с использованием XML, вы можете сделать это только с помощью пакета .NET. Я сделал это несколько лет назад с C # .NET 2.0

    Давайте будем гением компьютера.