PowerShellでgrepコマンドは使える?「Select-String」での検索方法を解説

Unix系で利用可能な文字列検索コマンドである「grep」がWindowsのPowerShellで利用したいと思う場合、Unix系とは違ったやり方が必要となります。この記事ではPowerShellで「grep」コマンドと同じ内容での検索方法を解説します。

目次

  1. 1PowerShellでgrepコマンドは使える?
  2. PowerShellでgrepコマンドは使える?
  3. 「Select-String」での検索方法
  4. 最後に

PowerShellでgrepコマンドは使える?

Unix系のOSであるLinuxなどでは、grepコマンドを利用することで文字列検索をすることができます。

PowerShellでgrepコマンドは使える?

このgrepコマンド、PowerShellでも利用したいと思う人もいますが、PowerShellでgrepコマンドは使えるのでしょうか。

PowerShellでは「grep」というコマンドはない

結論から言うとPowerShellで「grep」コマンドは使えません。そもそもgrepというコマンドがPowerShellに存在しないためです。

代わりに「Select-String」というコマンドを利用

grepが利用できない場合どう利用するのかですが、grepの代わりに「Select-String」というコマンドを利用します。

grepの代わりのコマンドとして十分利用可能なものなので、grepを利用したいと思った人はgrepの代わりにSelect-Stringを利用して文字列検索を実行してください。

「Select-String」での検索方法

grepの代わりに「Select-String」を利用した検索方法の説明に移ります。以下の説明で検索するファイルの対象(例示)は上記のとおりです。

なお、上級者向けですが連続したコマンド(パイプを繋げる)場合はパイプ記号(|)を利用します。パイプをつなげて「Select-String」でのAND検索なども可能なので、必要があればパイプをつなげたコマンドも実行してみましょう。

基本的な使い方

PowerShellの場合も、grepコマンドとおおむね使い方は同じです。Select-Stringとそれに関するオプションを組み合わせてコマンドを実行することで、grepと同じような結果をはじき出すことができます。詳細は後述します。

PowerShellでは検索文字はワイルドカードで囲って指定します。grepの場合はワイルドカードは不要なので忘れやすいので注意が必要です。

ファイル名はワイルドカードで囲う場合と、ワイルドカードで囲わない場合がありますがその点は簡単に後述します。

大文字/小文字の区別

PowerShellでの大文字小文字の区別は「-CaseSensitive」を利用します。grepでの大文字小文字の区別は「-i」がこれに該当します。

文字列/正規表現で指定

PowerShellで検索したいテキストを文字列や正規表現で指定したい場合は「-Pattern」のオプションを利用します。grepでの「-E」がこれに相当とします。

マッチしない行表示

PowerShellで指定した内容/パターンに一致したものを除外し、一致しない行を検索したい場合は「-NotMatch」オプションを利用します。grepでマッチした行を除外してマッチしない行を表示する場合「-v」を利用しています。

マッチした前後表示

PowerShellでマッチした行とその前後以外を除外して表示したい場合、「-Context」のオプションを指定します。後ろには抽出したい前後の行数を入力します。

grepでの前後表示は「-A」と「-B」が該当します。grepでの「-A」は後を、「-B」は前を示しますが、PowerShellではgrepのように前後別での表示はできません。

マッチした部分だけを表示

PowerShellでマッチした部分以外を除外して表示したいのであれば「| % { $_.Matches.Value }」をつけてコマンドを実行します。grepでの「-o」に該当します。

ファイルから検索

関連するまとめ

関連するキーワード

この記事のライター
八千草 蛍
分かりやすく気軽に読める記事を書いてまいりたいと思います。よろしくお願いいたします。

人気の記事

新着まとめ