Select-Stringコマンドレットを使う。Select-StringコマンドレットはUNIXのコマンドの一つであるgrepと同じような機能を提供するが、戻り値がMatchInfoオブジェクトのため、grepコマンドのデフォルトの状態とは異なり、マッチした行だけが表示されるわけではないことに注意。マッチした行だけを表示したい場合は、戻り値(MatchInfoオブジェクト)のLineプロパティを参照する。
PS > $lns = "高柳知葉", "大橋彩香", "石見舞菜香", "香坂さき", "和多田美咲" PS > $lns | Out-File -Encoding default temp.txt PS > Select-String "香" .\temp.txt -Encoding default temp.txt:2:大橋彩香 temp.txt:3:石見舞菜香 temp.txt:4:香坂さき PS > (Select-String "香" .\temp.txt -Encoding default).GetType().FullName System.Object[] PS > (Select-String "香" .\temp.txt -Encoding default)[0].GetType().FullName Microsoft.PowerShell.Commands.MatchInfo PS > (Select-String -Encoding default "香" .\temp.txt).Line 大橋彩香 石見舞菜香 香坂さき PS > (Select-String -Encoding default "香$" .\temp.txt).Line 大橋彩香 石見舞菜香 PS > (Select-String -Encoding default "[舞|美]" .\temp.txt).Line 石見舞菜香 和多田美咲 PS > Select-String -Encoding default "[舞|美]" .\temp.txt | % {$_.Line} 石見舞菜香 和多田美咲
UNIXのgrepコマンドは、デフォルトでは英文字の大文字と小文字は区別して検索するが、Select-Stringコマンドレットは、デフォルトでは大文字と小文字を区別しないので注意。区別する場合は-CaseSensitiveオプションを付ける。これはいわゆる2バイト文字も同じである。
PS > $s = "ABC", "abc", "123" PS > ($s | Select-String "AB").Line ABC abc PS > ($s | Select-String "AB" -CaseSensitive).Line ABC PS > $s = "ABC", "abc", "ABC", "abc" PS > ($s | Select-String "AB").Line ABC abc PS > ($s | Select-String "AB" -CaseSensitive).Line ABC
$ cat << EOD > temp.txt > ABC > abc > 123 > ABC > abc > EOD $ cat temp.txt ABC abc 123 ABC abc $ grep "AB" temp.txt ABC $ grep -i "AB" temp.txt ABC abc $ grep "AB" temp.txt ABC $ grep -i "AB" temp.txt ABC abc