cercare file di testo utilizzando C # e visualizzare il numero di linea e la linea completa che contiene la parola chiave di ricerca
-
19-09-2019 - |
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.
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 clausolaWhere
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