使用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文件格式,如Pessimist所写。 如果您不确定要写什么,请尝试在MS Excel中输入一些数据并单击菜单中的“另存为”选项,然后选择CSV作为文件类型。

在编写CSV文件格式时要小心,因为在某些语言中,分隔值的默认值不是逗号。 例如,在巴西葡萄牙语中,默认值为逗号作为小数点分隔符,点为千位分隔符和分号用于分隔值。 在写这篇文章时要注意文化。

另一种方法是使用水平标签作为分隔符。 尝试编写一个字符串,按TAB键,然后按另一个字符串并将其粘贴到Microsoft Excel中。 它是该程序中的默认分隔符。

如果您正在使用针对特定问题的临时解决方案,则可以不经过深思熟虑地使用其他替代方案。 如果您正在编写其他人(或其他环境)使用的内容,请注意文化特定的差异。

哦,我现在才记得:你可以使用XML编写一个电子表格,你可以只使用.NET软件包。 我几年前用C#.NET 2.0做过