miyamon/サクラエディタで複数キーワードを連続でGrep検索するPowerShellスクリプトを作った。

Created Sat, 20 Aug 2022 11:39:09 +0000 Modified Sun, 16 Jun 2024 13:44:44 +0000

きっかけ

サクラエディタの数ある機能の中で特に便利なGrep検索機能。
Grep検索機能は複数のファイルから特定のキーワード(文字列)が含まれるファイル、該当箇所を検索するのに日頃、よく利用しています。
正規表現を利用したOR条件で検索しても良いのですが、沢山のキーワードを楽に連続かつ高速にGrep検索したいと考え、簡単なPowerShellスクリプトを書いたので公開します。
特にエラーハンドリングはしていませんのでその辺りは目を瞑ってください。

 

PowerShellスクリプト仕様

スクリプトファイル構成

スクリプトとしては以下の2ファイルで構成します。

ファイル名 内容
sakura_grep.ps1 PowerShellメインスクリプトファイル
greplist.csv 検索キーワードリストファイル

 

スクリプトコード

  1. 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 ###"
    

     

  2. greplist.csv

    2行目以降から検索する文字列を記入ください。

    Keyword
    検索文字列A
    検索文字列B
    検索文字列C
    

     

スクリプト動作条件

  • スクリプトを実行するPCにサクラエディタがインストールされていること
  • スクリプトを構成する2ファイルが同じフォルダに保存されていること
  • greplist.csvに検索するキーワードが記載されていること

 

スクリプト引数

スクリプト実行において以下の引数を利用します。
Grep検索時によく変更する「サブフォルダからの検索」と「正規表現」オプションは引数指定して利用することを前提としています。

引数 指定値 内容 引数例
$1 <Path> 検索対象とするフォルダパス “C:\Users\User\Desktop”
$2 S サブフォルダを検索対象に含める -
R 正規表現を利用 -
SR サブフォルダを検索対象に含め、正規表現を利用 -
<blank> サブフォルダを検索対象に含めず、正規表現も利用しない -

 

実行例

  1. 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"
    

     

  2. Grep検索結果はスクリプトの保存先にresult.txtとして保存されます。
    通常のサクラエディタのGrep検索結果とは異なり、検索結果の行をダブルクリックしても対象のファイル表示はできないため、対象のファイルを開くには開きたい行を選択して[F12](タグジャンプ)を押下し、開きます。

 

ダウンロード