C#でテキストファイルの中身をGREPする

2024年3月13日水曜日

C#

t f B! P L

はじめに

この記事では、C#を使用してテキストファイルの内容をGREP(検索)する方法について説明します。GREPは、特定のパターンに一致する行をテキストから検索するUNIXコマンドラインツールの一つです。
この記事では、C#を使ってテキストファイルから特定の文字列を含む行を検索し、その行をコンソールに出力する方法を紹介します。

テキストファイル中身をGREPするコード

以下のC#コードは、StreamReaderクラスを使用してファイルを読み込み、ファイル内の各行に対して特定の文字列が含まれているかどうかをチェックします。もし特定の文字列が含まれている行が見つかった場合、その行はコンソールに表示されます。

static void Grep()
{
  string filePath = "/Users/sato/Souce/cs/BigGrep/dummy.txt";
  string grepText = "検索対象";
  using StreamReader reader = new StreamReader(filePath);

  string? line;
  while ((line = reader.ReadLine()) != null)
  {
    // 特定の文字列を含む行を検索
    if (line.Contains(grepText))
    {
      Console.WriteLine($"Found: {line}");
    }
  }
}

処理速度は大丈夫?

テキストファイルのGREP処理性能は、特に大量のデータを扱う場合、処理速度が重要なポイントの一つです。今回紹介したサンプルコードを、macOSを搭載したインテル Core i5プロセッサ、8GBメモリの環境で行った、テキストファイルGREP処理のパフォーマンス測定結果について解説します。

処理速度の測定結果

次の2つのサイズのテキストファイルを用意し、処理速度を検証した結果が次の表です。

テキストファイルのサイズ 処理時間
500MB 2秒
1GB 4秒

この表を見ると、テキストファイルのサイズが2倍になると、処理時間も大体2倍になることがわかります。これは、StreamReaderがバッファリングをサポートしているおかげです。StreamReaderはファイルの内容を一気に全部読み込むのではなく、一定量のデータを段階的にメモリに読み込む仕組みを採用しています。このアプローチにより、大きなサイズのファイルであっても、効率良く、スケーラブルにデータを処理できるのです。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ