我需要帮助才能使用c#搜索文本文件(日志文件)并显示行号和包含搜索关键字的完整行。
答案 0 :(得分:22)
这是对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();
答案 1 :(得分:11)
在这个游戏上有点迟到,但在这篇文章中发生过,我想我会添加一个替代答案。
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
子句一起使用来返回来自a的过滤后的一组行文件
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
答案 2 :(得分:1)
要导出执行Excel,您可以使用CSV文件格式,如Pessimist所写。如果您不确定要写什么,请尝试在MS Excel中输入一些数据并单击菜单中的“另存为”选项,然后选择CSV作为文件类型。
在编写CSV文件格式时要小心,因为在某些语言中,分隔值的默认值不是逗号。例如,在巴西葡萄牙语中,默认值为逗号作为小数分隔符,点为千位分隔符和分号用于分隔值。写这篇文章时要注意文化。
另一种方法是使用水平制表符作为分隔符。尝试编写一个字符串,按TAB键,然后按另一个字符串并将其粘贴到Microsoft Excel中。它是该程序中的默认分隔符。
如果您正在使用针对特定问题的临时解决方案,则可以不经过深思熟虑地使用其他替代方案。如果您正在编写其他人(或其他环境)使用的内容,请注意文化特定的差异。
哦,我现在才记得:你可以使用XML编写一个电子表格,你可以只使用.NET软件包。几年前我用C#.NET 2.0
完成了这项工作