PowerShell(パワーシェル)の文字列検索【grep】

※この記事は「2021年11月8日」に更新しました。

PowerShell(パワーシェル)の文字列検索について。

grep(グレップ)のようなコマンドレットはあるのでしょうか?

タカフミ
記事を書いている管理人の経歴は、以下の通りです。
  • 基本情報技術者資格所有者(ソフト開発の国家資格)
  • WordPress歴、約10年
  • パソコン販売歴、約5年

grep(グレップ)とは?

grep(グレップ)は、UNIX系(Linux など)で使えるコマンドです。

global regular expression print の略です。

テキストファイルを正規表現で検索するものです。

簡単に説明すると文字列を検索するときに使うものです。



PowerShell(パワーシェル)の文字列検索

PowerShell(パワーシェル)の文字列検索は、Select-String というコマンドレットで実現可能です。

Select-String オプション

オプションには、以下のようなものがあります。

-Path
ファイルパスを指定することができます。ワイルドカード使用可能。
-Pattern
検索するテキストを文字列または正規表現で指定する。
-NotMatch
指定したパターンに一致しないファイルを検索する。
-CaseSensitive
大文字と小文字を区別する。省略すると区別しない。
-Encoding
ファイルを検索するときに、Select-String が使用する文字エンコードを指定する。

【使用例】カレントディレクトリ内のファイルを検索

例えば、カレントディレクトリ内にある、複数のテキストファイルから指定した文字列を検索するには、以下のように書きます。

Select-String -path *.txt "検索したい文字列"

私は、テキストを Shift-JIS で保存しているので、-Encoding に oem を指定します(規定値が UTF-8 で文字化けするため)。

Select-String -Path *.txt "iPhone" -Encoding oem

結果は、以下の通りです。

【使用例】カレントディレクトリ内のファイルを検索

【使用例】サブディレクトリ内のファイルも検索

先程の例だと、サブディレクトリ内のテキストファイルは検索対象になりません。

以下のように書けば、サブディレクトリ内のファイルも検索できます。

Get-ChildItem *.txt -Recurse | Select-String "iPhone" -Encoding oem

結果は、以下の通りです。

【使用例】サブディレクトリ内のファイルも検索

grep が使える高機能エディタ

コマンドレットを使うのが面倒だという方は、grep が使える高機能エディタを使えば便利です。

例えば、サクラエディタは、GUI で grep を使うことができます。

メニューバーから以下を実行することで、簡単に文字列検索することができます。

検索 → Grep(Ctrl + G)

サクラエディタについては、以下の公式サイトからダウンロードできます。

サクラエディタ公式サイト
https://sakura-editor.github.io/

最後に

いかがでしょうか。

今回は、PowerShell(パワーシェル)の文字列検索について、解説しました。

Select-String というコマンドレットを使えば、文字列検索は可能です。

しかし、サクラエディタのような、高機能テキストエディタを使えば、grep(グレップ)は簡単にできます。

そして、かなり使いやすいので、エンジニア以外でも利用しやすいかと思います。