きっかけ
サクラエディタの数ある機能の中で特に便利なGrep検索機能。
Grep検索機能は複数のファイルから特定のキーワード(文字列)が含まれるファイル、該当箇所を検索するのに日頃、よく利用しています。
正規表現を利用したOR条件で検索しても良いのですが、沢山のキーワードを楽に連続かつ高速にGrep検索したいと考え、簡単なPowerShellスクリプトを書いたので公開します。
特にエラーハンドリングはしていませんのでその辺りは目を瞑ってください。
PowerShellスクリプト仕様
スクリプトファイル構成
スクリプトとしては以下の2ファイルで構成します。
ファイル名 | 内容 |
---|---|
sakura_grep.ps1 | PowerShellメインスクリプトファイル |
greplist.csv | 検索キーワードリストファイル |
スクリプトコード
-
sakura_grep.ps1
17行目の
$SAKURA
はスクリプトを実行するPCのサクラエディタのインストールパスに置き換えて利用ください。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#################################################### # Script Name : sakura_grep.ps1 # Discription : GrepGrep loop script in sakura editor # How to : > .\sakura_grep.ps1 "$1" "$2" # $1 : Grep target folder path # $2 : S|R|SR # : S :Search from Subfolders # : R :Regix # : SR:Sub folder + Regix # Example : > .\sakura_grep.ps1 "C:\Users\Desktop\" "SR" # Date : 2022/08/20 # Maker : miyamon #################################################### ### Inital:Set Variables ### HELP https://sakura-editor.github.io/help/HLP000109.html $SAKURA = "C:\Program Files (x86)\sakura\sakura.exe" # サクラエディタパス $GFOLDER = $Args[0] # 検索対象のフォルダ指定 $GFILE = "*.*" # 検索対象のファイル名パターン指定 *.*は全ファイル対象 $GOPTDEF = "PU" # P:該当行出力、U:標準出力、H:ヘッダ・フッタ出力しない $GCODE = "99" # 検索文字コード 自動判定 $RESULT = Join-Path $PSScriptRoot result.txt # Grep結果ファイル名 $GOPT = $GOPTDEF,$Args[1] # S:サブフォルダからも検索、R:正規表現を引数指定 Write-Output "### Grep Start ###" ### Main:Grep $Greplists = Join-Path $PSScriptRoot greplist.csv | Import-Csv -Encoding Default foreach ($Greplist in $Greplists) { $KEYWORD = ([String]$Greplist.Keyword) & $SAKURA -GREPMODE -GFOLDER="$GFOLDER" -GFILE="$GFILE" -GOPT="$GOPT" -GCODE="$GCODE" -GKEY="$KEYWORD" -CODE="0" | Out-File "$RESULT" -Append } Write-Output "### Grep Finish ###"
-
greplist.csv
2行目以降から検索する文字列を記入ください。
Keyword 検索文字列A 検索文字列B 検索文字列C
スクリプト動作条件
- スクリプトを実行するPCにサクラエディタがインストールされていること
- スクリプトを構成する2ファイルが同じフォルダに保存されていること
greplist.csv
に検索するキーワードが記載されていること
スクリプト引数
スクリプト実行において以下の引数を利用します。
Grep検索時によく変更する「サブフォルダからの検索」と「正規表現」オプションは引数指定して利用することを前提としています。
引数 | 指定値 | 内容 | 引数例 |
---|---|---|---|
$1 | <Path> | 検索対象とするフォルダパス | “C:\Users\User\Desktop” |
$2 | S | サブフォルダを検索対象に含める | - |
R | 正規表現を利用 | - | |
SR | サブフォルダを検索対象に含め、正規表現を利用 | - | |
<blank> | サブフォルダを検索対象に含めず、正規表現も利用しない | - |
実行例
-
PowerShellにてスクリプトの保存先となるフォルダに移動し、スクリプトを実行します。
ex.1)
- “C:\Users\User\Desktop"及びサブフォルダを検索対象
- 検索に正規表現を利用
.\sakura_grep.ps1 "C:\Users\User\Desktop" "SR"
ex.2)
- “C:\Users\User\Desktop"を検索対象
- 正規表現は利用しない。
.\sakura_grep.ps1 "C:\Users\User\Desktop"
-
Grep検索結果はスクリプトの保存先に
result.txt
として保存されます。
通常のサクラエディタのGrep検索結果とは異なり、検索結果の行をダブルクリックしても対象のファイル表示はできないため、対象のファイルを開くには開きたい行を選択して[F12](タグジャンプ)を押下し、開きます。