はじめに
当記事は、メモ書きとして残す目的で書いた記事です。
今回ご紹介するマクロは、私が仕事をする上で、 『3000行以上ある作業ログファイル200個から、特定の20行だけ抽出したい!』 という目的で初めて作ったものです。
◆この記事でわかること
サクラエディタで使える『Grepマクロ』の書き方の基本
■Grepマクロ
◆サクラエディタのGrepマクロ構文
サクラエディタのヘルプ内マクロリファレンスより抜粋した、Grep関数の構文です。
void S_Grep ( S1, S2, S3, i1 , i2 )
◇引数の説明
引数 | 型 | 内容 |
---|---|---|
S1 | 文字列 | 検索文字列 |
S2 | 文字列 | 検索対象ファイル |
S3 | 文字列 | 検索対象フォルダ |
i1 | 整数 数値 | Grepダイアログの状態 |
i2 | 整数 数値 | 文字コードセット |
◆1. Grepマクロ例: VBSのコードの書き方
' C:¥tempフォルダのテキストファイルから、『りんご』『なし』『みかん』を検索。 ' ※拡張子は.vbsです。 Grep "りんご", "*.txt", "c:\\temp", 0, 99 Grep "なし", "*.txt", "c:\\temp", 0, 99 Grep "みかん", "*.txt", "c:\\temp", 0, 99
結果は『C:¥tempフォルダ内の全テキストファイル』から、
『りんご』と書かれた行がすべて表示された後、
『なし』『みかん』続いて表示されます。
◆2. Grepマクロ例: 検索値を配列に格納して使用する場合
検索値を配列に入れると、編集が楽になります。
コピペして使用する場合は、『keys』と『sPath』を変更すればOKです。
'名前:Grepマクロサンプル2.vbs '内容:C:\\tempフォルダ内のファイルを検索する。 '------------- ' 設定 keys = Array( "りんご", _ "なし", _ "みかん" ) sFile = "*.*" 'ファイル名 sPath = "C:\\temp" 'ファイルパス i1 = 1 'Grepダイアログの状態: サブフォルダも検索 i2 = 99 '文字コードセット: 自動選択 '------------- ' Grep検索 ' 配列の要素数だけ、Grep検索を繰り返す。 For i = 0 To UBound(keys) 'UBound()は、配列の最大要素数 Grep Keys(i), sFile, sPath, i1, i2 Next
このサンプルでは、『c:\temp』内のファイルすべて検索します。
※UBound()は配列の要素数を取得できます。
◆3. Grepマクロ例: 編集中のファイルにGrep検索する場合
現在編集中のみファイルをGrep検索したい場合は、以下のようにすればOKです。
コピペして使用する場合は、『keys』のみ編集すればOKです。
'名前:Grepマクロサンプル3.vbs '内容:編集中のファイルをGrep検索する。 '------------- ' 設定 keys = Array( "りんご", _ "なし", _ "みかん" ) '------------- ' 編集中のファイルを対象に選択文字列でGrep実行 sFile = ExpandParameter("$f") sPath = ExpandParameter("$F") sDir = Left(sPath, Len(sPath) - Len(sFile) - 1) i1 = 18 'サブディレクトリなし、大文字小文字区別する。 i2 = 99 '文字コードセット自動 '------------- ' Grep検索 ' 配列の要素数だけ、Grep検索を繰り返す。 For i = 0 To UBound(keys) Grep Keys(i), sFile, sDir, i1, i2 Next
このサンプルは、現在編集中のファイルのみGrep検索します。
◆4. Grepマクロ例: 編集中ファイルのフォルダをGrep検索
現在編集中のみファイルをGrep検索したい場合は、以下のようにすればOKです。
コピペして使用する場合は、『keys』のみ編集すればOKです。
''名前:Grepマクロサンプル4.vbs '内容:編集中ファイルのフォルダをGrep検索する '------------- ' 設定 keys = Array( "りんご", _ "なし", _ "みかん" ) '------------- ' 編集中のファイルを対象に選択文字列でGrep実行 sFile = ExpandParameter("$f") sPath = ExpandParameter("$F") sDir = Left(sPath, Len(sPath) - Len(sFile) - 1) i1 = 2 + 16 + 32 '大文字小文字区別、文字コード自動、該当行表示。 '------------- ' Grep検索 ' 配列の要素数だけ、Grep検索を繰り返す。 For Each key In Keys Grep key, "*.*", sDir, i1 Next
このサンプルは、現在編集しているファイルのフォルダをGrep検索します。
サブフォルダも検索に含めたい場合、i1の値に1を足せばOKです。
ついでに繰り返し処理を、For Each に変更しました。
さいごに
私は200個以上のファイル内容を確認する必要があったため、 作業内容をマクロにすることで、とても負担が減りました。
もし同じように『大量のテキストファイルの内容確認を繰り返す』 という方のお役に立つことができれば助けになれば幸いです。
0 件のコメント:
コメントを投稿