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

StackOverflow https://stackoverflow.com/questions/2437716

Вопрос

Мне нужна помощь в поиске текстового файла (файла журнала) с помощью 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);
}

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

  • Файл.Строки чтения, что устраняет необходимость в StreamReader, и это также прекрасно сочетается с LINQ'ом Where предложение для возврата отфильтрованного набора строк из файла.

  • Перегрузка Перечисляемый.Выберите это возвращает индекс каждого элемента, к которому затем вы можете добавить 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, как писал the Pessimist.Если вы не уверены в том, что писать, попробуйте ввести некоторые данные в MS Excel и нажмите на опцию "Сохранить как" в меню и выберите CSV в качестве типа файла.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top