• 追加された行はこの色です。
  • 削除された行はこの色です。
** Select-StringとBashのgrepとの違い [#d4ebc37b]
* Select-StringとBashのgrepとの違い [#r2868703]

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