目次
PowerShellでgrepは使える?
PowerShellに「grep」というコマンドは存在しません。
しかし、Linuxのgrepとほぼ同じことを実現できるコマンドが存在します。
それが Select-String です。
たとえば、Linuxで次のように書くとします。
grep "error" log.txtこれをPowerShellで実行する場合は、次のように書き換えられます。
Select-String "error" log.txtつまり、grep = Select-String と覚えておくとよいでしょう。
Select-Stringの基本構文と使い方
基本構文は次の通りです。
Select-String -Pattern <検索文字列> -Path <ファイルパス>例:
Select-String -Pattern "Error" -Path "C:\Logs\app.log"-Pattern… 検索したいキーワードまたは正規表現-Path… 検索対象のファイル
結果として、マッチした行と行番号が表示されます。
ファイル内検索の実例
たとえば、ログファイルの中から「Error」という文字を含む行を検索したい場合:
Select-String -Pattern "Error" -Path "C:\Logs\*.log"*.logを指定すると、複数のログファイルをまとめて検索できます。- 結果には「ファイル名」「行番号」「一致した行の内容」が出力されます。

Select-Stringの主なオプション一覧
Select-Stringは多機能なコマンドで、grepと同様に細かい指定が可能です。
以下に、よく使われるオプションとその意味をまとめました。
| オプション | 説明 | 使用例 |
|---|---|---|
-Pattern | 検索する文字列または正規表現を指定します。 | -Pattern "Error" |
-Path | 検索対象のファイルやフォルダを指定します。ワイルドカードも使用可能。 | -Path "C:\Logs\*.log" |
-Recurse | サブディレクトリ内も再帰的に検索します。 | -Recurse |
-CaseSensitive | 大文字小文字を区別して検索します。未設定の場合は区別しません。 | -CaseSensitive |
-SimpleMatch | 正規表現を無効にして単純な文字列検索を行います。 | -SimpleMatch |
-AllMatches | 行内で複数の一致がある場合にすべてを表示します。 | -AllMatches |
-NotMatch | 一致しなかった行のみを表示します。grepの-vに相当。 | -NotMatch |
-Encoding | ファイルの文字コードを指定します(例:UTF8, ASCII, Shift_JISなど)。 | -Encoding UTF8 |
-List | 一致したファイル名のみを一覧表示します。 | -List |
-Context <前 後> | 一致行の前後の行も一緒に表示します。 | -Context 2,2 |
-Quiet | 一致があるかどうかの真偽値のみを返します。スクリプト条件分岐に便利。 | -Quiet |
まとめ:PowerShellでもgrep並みに検索できる!
- PowerShellには
grepは存在しないが、Select-Stringが同等機能を提供 - ファイル、ディレクトリ、正規表現、オブジェクト処理まで柔軟に対応可能
- 実務ではログ監視やキーワード検索に大活躍
Linuxユーザーでも、PowerShellに慣れれば同様の操作感で高速に検索を行えます。

コメント