Chi*_*esh 16 c# command-line text line-numbers streamreader
我需要帮助才能使用c#搜索文本文件(日志文件)并显示行号和包含搜索关键字的完整行.
Pet*_*erM 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();
Run Code Online (Sandbox Code Playgroud)
Gra*_*ICA 14
在这一场比赛的比赛晚了,但发生在这篇文章中,并认为我会添加一个替代答案.
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);
}
Run Code Online (Sandbox Code Playgroud)
这用于:
File.ReadLines,它消除了对a的需要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
Run Code Online (Sandbox Code Playgroud)
输出:
3: first matching SEARCHWORD line
5: ...here's aSEARCHWORDmatch
6: SEARCHWORD123
Run Code Online (Sandbox Code Playgroud)