【初心者向け】PowerShellでテキスト検索する方法|findとSelect-Stringの違いと使い方

Windows

Linuxのgrepコマンドのように、Windows PowerShellでもファイルやコマンド出力から文字列を検索したいという場面は多いはずです。

そんなときによく話題に上がるのが「findコマンド」と「Select-String」ですよね。

でも、こんな疑問はありませんか?

  • findってPowerShellでも使えるの?
  • Select-Stringとの違いは?

今回は、PowerShellで文字列を検索する方法を基礎から応用まで解説します。


スポンサーリンク

PowerShellでも使える? findコマンドとは

実は、findWindowsに古くからあるコマンドプロンプト(cmd.exe)由来のコマンドで、PowerShellでも使うことはできるんです。

基本構文(PowerShellでもOK)

find "検索語" ファイル名

例:sample.txtから「error」を検索

find "error" sample.txt

結果errorを含む行だけが表示されます。

シンプルで使いやすいのが特徴ですね。


findstrとの違い

findstrはより高機能な検索ツールで、正規表現や複数キーワードの検索が可能です。

findstr /R /C:"エラー.*失敗" sample.txt

findstrはgrepに近い動きをします。こちらもコマンドプロンプト由来のコマンドです。


PowerShellネイティブの検索方法:Select-String

PowerShellを使うなら、より強力で柔軟な検索が可能なSelect-Stringコマンドレットがおすすめです。

基本構文

Select-String -Pattern "検索語" -Path "ファイル名"

Select-String -Pattern "error" -Path "sample.txt"

出力例

sample.txt:3: error: failed to start

行番号やファイル名も表示され、複数ファイル対応・正規表現サポート・パイプとの相性抜群なんです。


パイプで他のコマンドと組み合わせる

PowerShellの真価が発揮されるのは、パイプとの組み合わせです。

Get-Contentと組み合わせ

Get-Content sample.txt | Select-String "error"

直接文字列を検索

"これはテストです" | Select-String "テスト"

この柔軟性がPowerShellらしい使い方ですね。


よく使うオプション・応用例

Select-Stringには便利なオプションがたくさんあります。

オプション内容
-AllMatches同じ行に複数マッチしてもすべて表示
-NotMatchパターンに一致しない行を表示
-CaseSensitive大文字小文字を区別
-Encoding UTF8文字コード指定(日本語対応時に重要)

これらのオプションを使いこなすと、より高度な検索ができるようになります。


findとSelect-Stringの違いまとめ

それぞれの特徴を表でまとめました。

項目findSelect-String
使用元cmd.exePowerShellネイティブ
正規表現×
ファイル指定単一のみ複数可
出力情報行のみ行番号・ファイル名あり
日本語の扱い弱い強い(エンコーディング指定可)

PowerShellを使うなら、Select-Stringの方が圧倒的に便利ですね。


まとめ:PowerShellではSelect-Stringを使いこなそう!

Windows PowerShellでは、昔ながらのfindも使えますが、より柔軟で高性能なSelect-Stringを使うのがおすすめです。

ファイルの中身を調べたいとき、ログからキーワードを抽出したいときなどに重宝します。

ポイントまとめ

  • findはシンプルで軽量、PowerShellでも使用可
  • 正規表現や複数ファイル対応ならSelect-String一択
  • パイプとの組み合わせやスクリプト化にも最適
  • 日本語やUTF-8の扱いもSelect-Stringが優秀

コメント

タイトルとURLをコピーしました