Select-StringとBashのgrepとの違い

  • PowerShellのSelect-StringとBashのgrepは文字列を検索するという機能は似ているが、役割は違う。
  • なぜかというと、Bashでは|(パイプ)で渡されるのが文字列なので、その抽出の為にgrepを多用せざるをえない。
  • 一方、PSではパイプで渡されるのがオブジェクトなので、Select-Stringのような文字列検索コマンドを使う必要性は低い。
  • Select-String(やgrep)は文字列を検索する為のコマンドである事、
  • PSでSelect-Stringを使うのは多くの場合、テキストファイルの中身を検索する場合である事を理解しておく。

例えば、Bashでは以下のようなケースでgrepコマンドは頻繁に使われるが、

 Bash> ls -R * | grep ".txt"
 Bash> ps -aux | grep "/usr/bin/python"

PSでは、

 PS> dir -r * | select-string ".txt
 PS> ps | select-string "chrome"

のようにSelect-Stringコマンドを普通は使わない。dirからパイプに渡るのはSystem.IO.FileInfoオブジェクトであり、psからパイプに渡るのはSystem.Diagnostics.Processオブジェクトだから。つまり、

 PS> dir -r -Path *.txt
 PS> ps -Name *chrome*

のように、オブジェクトのプロパティを参照して抽出する。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS