※この記事は「2023年8月30日」に更新しました。
PowerShell(パワーシェル)の文字列検索。
- PowerShell の文字列検索は?
- grep(グレップ)のような、コマンドレットはあるの?
上記のような悩みを持つ方に向けて、解説していきます。
記事を書いている管理人の経歴は、以下の通りです。
- 基本情報技術者資格所有者(ソフト開発の国家資格)
- WordPress歴、10年以上
- Withマーケ会員(2022年10月入会)
目次
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)
サクラエディタについては、以下の公式サイトからダウンロードできます。
最後に
今回は、PowerShell(パワーシェル)の文字列検索について、解説しました。
Select-String というコマンドレットを使えば、文字列検索は可能です。
しかし、サクラエディタのような、高機能テキストエディタを使えば、grep(グレップ)は簡単にできます。
そして、かなり使いやすいので、エンジニア以外でも利用しやすいかと思います。