buscar archivo de texto usando C # y mostrar el número de línea y la línea completa que contiene la palabra clave de búsqueda

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

Pregunta

Necesito ayuda para buscar un archivo de texto (archivo de registro) usando C # y mostrar el número de línea y la línea completa que contiene la palabra clave de búsqueda.

¿Fue útil?

Solución

Esta es una ligera modificación 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();

Otros consejos

poco tarde para el juego en éste, pero pasó al otro lado este post y que me gustaría añadir una respuesta 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);
}

Esto utiliza:

  • File.ReadLines , lo que elimina la que necesita un StreamReader, y también juega muy bien con la cláusula Where de LINQ para devolver un conjunto filtrado de líneas de un fichero.

  • La sobrecarga de Enumerable.Select que devuelve el índice de cada elemento, que se a continuación, puede agregar 1 a, para obtener el número de línea para la línea de juego.

Entrada de la muestra:

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

Salida:

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

Para exportar qué Excel se puede utilizar el formato de archivo CSV, como el pesimista escribió. Si no está seguro sobre qué escribir, trate de introducir algunos datos en MS Excel y haga clic en "Guardar como" opción en el menú y selecciona CSV como tipo de archivo.

Tenga cuidado al escribir un formato de archivo CSV como en algunos idiomas el valor por defecto para la separación de los valores no es la coma. En portugués de Brasil, por ejemplo, el valor predeterminado es una coma como separador decimal, punto como separador de miles y punto y coma para separar valores. Cuidado con la cultura al escribir eso.

La otra alternativa es el uso de pestañas horizontales como separadores. Experimento para escribir una cadena, presione la tecla TAB y luego otra cadena y pegarla en Microsoft Excel. Es el separador predeterminado en ese programa.

Si está utilizando una solución ad-hoc para su problema específico, o bien alternativas se pueden utilizar sin mucho pensamiento. Si está programando algo para ser utilizado por otras personas (o en otros entornos), importe de las diferencias específicas de la cultura.

Oh, acabo de recordar ahora: se puede escribir una hoja de cálculo utilizando XML, se puede hacer eso con sólo el paquete .NET. He hecho que hace años con C # .NET 2.0

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top