procurar arquivo de texto usando c # e exibir o número da linha ea linha completa que contém a palavra-chave de pesquisa

StackOverflow https://stackoverflow.com/questions/2437716

Pergunta

I precisar de ajuda para procurar um arquivo de texto (arquivo de log) usando c # e exibir o número da linha ea linha completa que contém a palavra-chave de busca.

Foi útil?

Solução

Esta é uma ligeira modificação de: 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();

Outras dicas

Um pouco tarde para o jogo em um presente, mas aconteceu em este post e pensei que eu iria adicionar uma resposta alternativa.

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);
}

Este usos:

  • File.ReadLines , o que elimina a necessidade de um StreamReader, e também funciona muito bem com cláusula Where do LINQ para retornar um conjunto filtrado de linhas de um arquivo.

  • A sobrecarga de Enumerable.Select que os retornos do índice de cada elemento, o que você pode então adicionar 1 a, para obter o número da linha para a linha correspondente.

Entrada da amostra:

just a sample line
another sample line
first matching SEARCHWORD line
not a match
...here's aSEARCHWORDmatch
SEARCHWORD123
asdfasdfasdf

Output:

3: first matching SEARCHWORD line
5: ...here's aSEARCHWORDmatch
6: SEARCHWORD123

Para exportação fazer Excel você pode usar o formato de arquivo CSV, como o pessimista escreveu. Se não tiver certeza sobre o que escrever, tente inserir alguns dados em MS Excel e clique na opção de "Salvar como" no menu e escolha CSV como tipo de arquivo.

Tome cuidado ao escrever um formato de arquivo CSV como em algumas línguas o padrão para a separação de valores não é a vírgula. Em português do Brasil, por exemplo, o padrão é a vírgula como separador decimal, ponto como separador de milhares e vírgula para separar valores. Mente a cultura ao escrever isso.

A outra alternativa é o uso de guias horizontais como separadores. Experimentar para escrever uma corda, pressione a tecla TAB e, em seguida, uma outra corda e colá-lo no Microsoft Excel. É o separador padrão nesse programa.

Se você estiver usando uma solução ad-hoc para o seu problema específico, quer alternativas pode ser usado sem muito pensar. Se você estiver programando algo para ser usado por outras pessoas (ou em outros ambientes), mente as diferenças de cultura específicos.

Oh, eu só lembrei agora: você pode escrever uma planilha usando XML, você pode fazer isso com apenas o pacote .NET. Eu tenho feito isso anos atrás, com C # .NET 2.0

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top