Искать текстовый файл с помощью С# и отображать номер строки и полную строку, содержащую ключевое слово поиска
Мне нужна помощь для поиска текстового файла (файла журнала) с помощью С# и отображения номера строки и полной строки, содержащей ключевое слово поиска.
Ответы
Ответ 1
Это небольшая модификация: 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();
Ответ 2
Бит поздно в игре на этом, но произошел на этом посту, и я подумал, что добавлю альтернативный ответ.
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 aSEARCHWORDmatch
SEARCHWORD123
asdfasdfasdf
Вывод:
3: first matching SEARCHWORD line
5: ...here aSEARCHWORDmatch
6: SEARCHWORD123
Ответ 3
Чтобы экспортировать Excel, вы можете использовать формат файла CSV, как писал Пессимист. Если вы не уверены в том, что писать, попробуйте ввести некоторые данные в MS Excel и нажмите "Сохранить как" в меню и выберите CSV в качестве типа файла.
Соблюдайте осторожность при записи формата CSV файла, как в некоторых Языки по умолчанию для разделения значений не является запятой. Например, в бразильском португальце по умолчанию используется запятая в виде разделителя в виде десятичного разделителя, точка - разделитель тысяч и точка с запятой для разделения значений. Помните культуру, когда пишете это.
Другой альтернативой является использование горизонтальных вкладок в качестве разделителей. Попробуйте написать строку, нажмите клавишу TAB, а затем еще одну строку и вставьте ее в Microsoft Excel. Это разделитель по умолчанию в этой программе.
Если вы используете специальное решение для своей конкретной проблемы, либо альтернативы можно использовать, не задумываясь. Если вы программируете что-то, что будет использоваться другими людьми (или в других средах), помните о различиях в культуре.
О, я только что вспомнил: вы можете написать таблицу с использованием XML, вы можете сделать это только с помощью пакета .NET. Я сделал это несколько лет назад с С#.NET 2.0