使用c#搜索文本文件并显示行号和包含搜索关键字的完整行

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)