【PowerShell】Grep検索する

Power Shellで
 ・Grep検索
できます!

コード

ここでは例として、以下を対象にGrep検索して結果をファイルへ出力します。

対象フォルダデスクトップ配下の「sample」フォルダ
対象ファイル(拡張子等)*.txt
対象文字列りんご
出力ファイルデスクトップ配下の「grep_result.txt」
Grep検索の対象
# 対象フォルダ
$targetFolder = "C:\Users\user\Desktop\sample"
# 対象ファイル(拡張子等)
$targetFile = "*.txt"
# 対象文字列
$targetString = "りんご"
# 出力ファイルパス
$outputFile = "C:\Users\user\Desktop\grep_result.txt"

$ws = New-Object -ComObject Wscript.Shell

try
{
    Get-ChildItem $targetFolder -Recurse -Filter $targetFile | 
    Select-String -Pattern $targetString -Encoding default | 
    Set-Content $outputFile
    $ws.popup("Grepに成功しました。")
}
catch [System.IO.IOException]
{
    $ws.popup("Grepに失敗しました。`n出力ファイルが開いている可能性があります。")
}
catch
{
    $ws.popup("Grepに失敗しました。")
}

「Get-ChildItem」コマンドレットに「-Recurse」オプションを付けることで、「指定したフォルダ配下にあるフォルダ(=サブフォルダ)も対象」とします(14行目)。

「Select-String」コマンドレットにより、ファイルから対象文字列を検索します(15行目)。
※「-Encoding」オプションで文字コードを指定します。「default」は「Shift-JIS」です。

「Set-Content」コマンドレットにより、Grep結果をファイルへ出力します(16行目)。

パイプにより
 ・「Get-ChildItem」コマンドレットの結果を「Select-String」コマンドレットへ
 ・「Select-String」コマンドレットの結果を「Set-Content」コマンドレットへ
渡しています。

「`n」により、文字列を改行しています(21行目)。

文字列の改行
文字列の改行

実行結果

Grep検索できました。
※文字列「りんご」の記載があるファイルの検索ができました。

実行結果①
実行結果①
実行結果②
実行結果②
実行結果③
実行結果③

参考

上記のコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Get-ChildItem」コマンドレット


●「Select-String」コマンドレット


●「Set-Content」コマンドレット

タイトルとURLをコピーしました