[登録されているタグ]

[記事公開日]2025/12/20

PowerShellで正規表現検索を行う|Select-String の正規表現

📝 はじめに

PowerShellでログやテキストファイルを扱っていると、
「特定の文字列を含む行だけを探したい」
「条件に合う行を正規表現で柔軟に検索したい」
と感じる場面は多いのではないでしょうか。

そんなときに活躍するのが
Select-String です。
この記事では、PowerShellで正規表現検索を行う基本から、
実務で役立つ使い方までを、段階的に解説します。

こんな場面で便利

  • ログファイルからエラー行だけを抽出したい
  • 複数ファイルをまとめて検索したい
  • 正規表現を使って柔軟に条件指定したい

✅ このコマンドでできること(要点)

  • 文字列や正規表現で行検索ができる
  • ファイル・文字列・パイプライン入力に対応
  • 一致した行番号やファイル名を取得できる
  • grep のような感覚で使える

✅ Select-String でできること

Select-String は、
指定した文字列や正規表現に一致する
行そのものを検索・抽出するコマンドです。

単なる判定(true/false)ではなく、
一致した行・位置・ファイル情報まで取得できるのが大きな特徴です。

🧩 基本構文

Select-String -Pattern "検索パターン" -Path ファイル名
Select-String -Pattern "検索パターン"

-Pattern には
文字列または正規表現を指定します。

▶ 基本的な使い方(まずこれだけ)

🔹 ファイルから文字列を検索する

Select-String -Pattern "error" -Path log.txt

error を含む行だけが表示されます。
一致行が出力されていれば正常です。

🔹 パイプライン入力を検索する

Get-Content log.txt | Select-String "warning"

ファイル内容を流し込みながら検索できます。

🛠 よく使われる指定例

🔹 正規表現で数字を含む行を検索

Select-String -Pattern "\d+" -Path data.txt

数字を含む行だけが抽出されます。

🔹 複数ファイルをまとめて検索

Select-String -Pattern "failed" -Path *.log

複数ファイルを一括で検索できます。

🔹 大文字・小文字を区別する

Select-String -Pattern "Error" -CaseSensitive -Path log.txt

大文字・小文字を厳密に判定したい場合に使います。

💼 実務でよく使う使用例(応用)

🔹 エラー行だけを抽出して表示

Select-String -Pattern "error|failed" -Path *.log

複数条件を OR 指定で検索できます。

🔹 行番号付きで結果を確認する

Select-String -Pattern "timeout" -Path log.txt | Select-Object LineNumber, Line
組み合わせ例

  • Select-Object で行番号や内容を整理
  • Where-Object でさらに条件を追加
  • Out-File で検索結果を保存

🧩 よくある勘違い・つまずきポイント

  • 戻り値は文字列ではなくオブジェクトである
  • 正規表現がデフォルトで有効になっている
  • 部分一致検索が基本動作である
  • -match とは用途が異なる
  • 大量ファイルでは処理に時間がかかることがある

🔄 cmdとの違いについて

cmd では同様の検索を行う場合、
find
findstr を使います。
PowerShell の Select-String は、
正規表現・オブジェクト処理・後続加工を
1つの流れで行える点が大きな違いです。

⚠ エラー・うまく動かないときの確認ポイント

  • 検索パターンの正規表現が正しいか
  • 対象ファイルのパスが合っているか
  • 文字コードの違いで一致しない可能性
  • 検索対象が想定どおり読み込まれているか

🧠 注意点

Select-String は非常に強力ですが、
正規表現を複雑にしすぎると可読性が下がります。
実務では「まず単純なパターンから試す」のがおすすめです。

📌 まとめ

  • Select-String は行単位で検索・抽出するコマンド
  • 正規表現を使った柔軟な検索が可能
  • ログ解析やトラブル調査で特に有効
  • 次は -match や -replace と使い分けると理解が深まる

🔎 PowerShellコマンドを探す

やりたいことからコマンドを探せます。

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • 正規表現で検索したい
  • ログを解析したい
Generic filters

サイト内検索(入力すると候補が出ます)

Generic filters


Generic filters

Generic filters

すべてを開く | すべてを閉じる
ページ上部へ戻る