- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PowerShell/文字列/Select-Stringでテキスト検索 へ行く。
- 1 (2016-04-29 (金) 22:19:30)
Select-Stringでテキスト検索
検索の指定方法
ファイルのテキスト検索
Select-String -Path "*.txt" -Pattern "hello"
Patternで指定する文字列はデフォルトで正規表現が使える。
エイリアス・PathとPatternの省略
sls "hello" *.txt
OR検索
sls "hello", "world" *.txt
"hello"または"world"がある行にマッチする。
NOT検索
sls -Path *.txt -NotMatch -Pattern "hello","world"
"hello"も"world"もない行にマッチする。
AND検索
sls "hello" *.txt | sls "world" または Get-Content *.txt | Where-Object { $_ -match "hello" -and $_ -match "world" }
"hello"と"world"がある行にマッチする。
-AllMatchesオプション 各行で複数の一致を検索
"hello, hello"と書かれたtest.txtがあるとする。
PS> gc test.txt hello, hello
AllMachesオプションなしでは、
PS> $ret = sls "hello" test.txt PS> $ret.Matches Groups : {hello} Success : True Captures : {hello} Index : 0 Length : 5 Value : hello
1文字目(Index:0)のhelloだけキャプチャーされる。AllMachesオプションありでは
PS> $ret = sls "hello" test.txt -AllMatches Groups : {hello} Success : True Captures : {hello} Index : 0 Length : 5 Value : hello Groups : {hello} Success : True Captures : {hello} Index : 6 Length : 5 Value : hello
1文字目に加えて、5文字目(Index:6)のhelloもキャプチャーされる。
検索結果の加工
マッチしたファイル名を取得
sls "hello" *.txt | Select-Object filename | Get-Unique -AsString
- Select-Objectの結果はMatchInfoオブジェクトなので、Get-UniqueにはAsStringオプションを付けて文字列として解釈するようにする。