もくじ
📝 はじめに
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コマンドを探す
やりたいことからコマンドを探せます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- 正規表現で検索したい
- ログを解析したい
