- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PowerShell/文字列/Select-StringとBashのgrepとの違い へ行く。
- 1 (2016-04-29 (金) 22:21:54)
- 2 (2016-04-29 (金) 22:25:52)
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*
のように、オブジェクトのプロパティを参照して抽出する。