PowerShellで複数条件のgrep検索を行う方法|Select-Stringの活用とOR、AND検索それぞれ解説
目次
スポンサードリンク
PowerShellでは、Linuxのgrepのような検索処理を Select-String コマンドレットで実現できます。この記事では、複数のキーワードを条件に検索する方法や、ファイル・パイプ処理との組み合わせについて解説します。
Select-String を使った基本の検索構文
以下のコマンドは、log.txt から “error” というテキストを含む行を抽出します。
Select-String -Path "log.txt" -Pattern "error"
複数条件のどれかに一致する結果を表示(OR条件)
複数のキーワードを条件として指定し、どれか一つにマッチした行を表示(OR条件)したいときは、複数のキーワードをパイプ「| 」区切りにします。 以下の例では、log.txtの内、error、fail、taimeout のいずれかを含む行が表示されます。
Select-String -Path "log.txt" -Pattern "error|fail|timeout"
複数キーワードすべてを含む結果を表示(AND条件)
すべてのキーワードを含む行だけに絞りこみたい場合は、Where-Object と組み合わせてコマンドを実行します。この例では、「error」かつ「timeout」を含む行のみが表示対象になります。
Get-Content "log.txt" | Where-Object { $_ -match "error" -and $_ -match "timeout" }
まとめ
Select-String は、ログ解析やテキスト検索、ファイル監視などで非常に便利なPowerShellのgrep相当ツールです。条件が増えても、正規表現やパイプ処理で柔軟に対応できるのが強みです。
PowerShellの基礎を一通り学べるおすすめ書籍
Windows環境で開発やシステム管理を行うエンジニアにとって、PowerShellの知識は非常に重要なスキルセットです。こちらの書籍はサンプルも豊富で手元に置いておきたい一冊です。
リンク
コマンドプロンプトのポケットリファレンス:Windows11対応版
リンク