PowerShellでgrepコマンドの代わりに使えるSelect-String活用術

目次

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に慣れれば同様の操作感で高速に検索を行えます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

・20代
・IT未経験からSIerに就職、開発とプロジェクト管理を経験
・働いている中で会計に興味を持ち、ERPの会計領域を挑戦中
・筋トレ最高!
保有資格:日商簿記1級/応用情報/ITストラテジスト

コメント

コメントする

目次