C#を使用してテキストファイル(ログファイル)を検索し、行番号と検索キーワードを含む完全な行を表示するには、ヘルプが必要です。
これは次のわずかな変更です 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();
これについてはゲームに少し遅れましたが、この投稿全体で起こり、別の答えを追加したいと思いました。
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);
}
これは使用します:
File.ReadLines 、これは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
出力:
3: first matching SEARCHWORD line
5: ...here's aSEARCHWORDmatch
6: SEARCHWORD123
Excelをエクスポートするには、Pessimistが書いたように、CSVファイル形式を使用できます。何を書くかわからない場合は、MS Excelにデータを入力して、メニューの[名前を付けて保存]オプションをクリックし、ファイルの種類としてCSVを選択してください。
一部の言語では、値を区切るデフォルトはカンマではないため、CSVファイル形式を書き込む場合は注意してください。たとえば、ブラジルのポルトガル語では、デフォルトは小数点としてカンマ、3桁ごとにドット、値を区切るためのセミコロンです。それを書くときは文化に注意してください。
他の選択肢は、セパレータとして水平タブを使用することです。文字列を書き込んでみて、Tabキーを押してから別の文字列を押して、Microsoft Excelに貼り付けます。これは、そのプログラムのデフォルトのセパレータです。
特定の問題に対してアドホックソリューションを使用している場合は、どちらの選択肢もあまり考えずに使用できます。他の人(または他の環境)が使用するものをプログラミングする場合は、文化固有の違いに注意してください。
ああ、今覚えています。XMLを使用してスプレッドシートを作成できます。これは、.NETパッケージだけで実行できます。その数年前にC#.NET 2.0でやった