cercare file di testo utilizzando C # e visualizzare il numero di linea e la linea completa che contiene la parola chiave di ricerca

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

Domanda

Ho bisogno di aiuto per cercare un file di testo (file di log) utilizzando C # e visualizzare il numero di linea e la linea completa che contiene la parola chiave di ricerca.

È stato utile?

Soluzione

Questa è una piccola modifica da: 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();

Altri suggerimenti

po 'tardi per il gioco su questo, ma è successo attraverso questo post e ho pensato di aggiungere una risposta 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);
}

Questo utilizza:

  • file.readlines , che elimina la necessità di un StreamReader, e gioca anche bene con la clausola Where di LINQ per restituire un insieme filtrato di righe da un file.

  • Il sovraccarico di Enumerable.Select che restituisce l'indice di ogni elemento, che si possono poi aggiungere 1 a, per ottenere il numero di linea per la linea corrispondente.

Esempio di input:

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

Per esportare fa Excel è possibile utilizzare il formato di file CSV, come il pessimista ha scritto. In caso di dubbi su cosa scrivere, provare a inserire alcuni dati in MS Excel e cliccare su "Salva con nome" opzione nel menu e selezionare il tipo di file CSV.

Fare attenzione quando si scrive un formato di file CSV come in alcune lingue di default per la separazione di valori non è la virgola. In brasiliano portoghese, per esempio, il valore predefinito è la virgola come separatore decimale, punto come separatore delle migliaia e virgola per separare i valori. Mente la cultura durante la scrittura di questo.

L'altra alternativa è usare tabulazioni orizzontali come separatori. Esperimento per scrivere una stringa, premere il tasto TAB e poi un'altra stringa e incollarlo in Microsoft Excel. E 'il separatore predefinito in quel programma.

Se stai usando una soluzione ad hoc per il vostro problema specifico, sia le alternative possono essere utilizzati senza molto pensare. Se si sta programmando qualcosa per essere utilizzati da altre persone (o in altri ambienti), mente differenze specifiche della cultura.

Oh, ho appena ricordato ora: è possibile scrivere un foglio di calcolo utilizzando XML, si può fare solo con il pacchetto .NET. Ho fatto che anni fa con C # .NET 2.0

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top