お品書き
書き直し中…
とりあえず、中へどうぞ
↓↓↓
スポンサーリンク

秀丸エディタのマクロでgrepを使うには

便利ツール/ソフトウェア
Windowsしか使ったことがない(もちろんコードを書いたことなどない)という人には聞き慣れないコマンド「grep」ですが、知っている人は知っている、大変便利な機能ですね。

grepはテキストの中から指定したワードの含まれる行を抽出できます。

秀丸エディタならば

「検索」→「grepの実行」




これをマクロで自動化したかったのだけど、すんなり行かなかった。

基本的過ぎる内容のせいか、解説しているサイトも見つからず、ちょっとだけ苦労したので記録しておく。

通常なら、やりたい作業をマクロの記録をオンにして一通りやれば、その内容が記録されるので簡単にマクロを作成できる(エクセル等でも同じですね。)
「マクロ」→「キー操作の記録開始/終了」→[マクロ化したい作業を行う]→「キー操作の記録開始/終了」

そして、「マクロ」→「キー操作の保存」で名前をつけて保存

必要に応じて、「マクロ」→「マクロ実行」→「編集」で内容を修正
しかし、マクロの記録をオンにして「検索」→「grep」をやってみても、記録されない・・・

検索してみたら、grep行うコマンドは「grep」(そりゃそうですわな)

しかし、それでやると、新しい空のウィンドウが開いて、そこからgrepを行おうとしてしまうので、何も抽出されない。

ヘルプを見てみたら、「現在の内容」からgrepをかけるには、「localgrep」というコマンドを使うようです。

例
localgrep "hogehoge", word, noregular;
上記のように書けば、「hogehoge」という単語でgrepがかけられました。

そして、引数(青字部分)は他にもたくさんあるようですが、全てはちょっと調べきれていませんが、とりあえず、「word」を最低限指定する必要があるようです。(単語の検索?)

(「regular/noregular」は正規表現を使うか使わないか)

ページのソースからOGPタグだけを抽出するマクロを書いてみた
setcompatiblemode 0x0F; begingroupundo; replaceallfast "¥¥n" , "" , regular, nocasesense, nohilight; replaceallfast "<" , "¥¥n¥¥0" , regular, nocasesense, nohilight; localgrep "og:", word, noregular; endgroupundo 1;
※description等複数行に渡って書かれている行があると抽出できないので、改行を一度全部削除して、タグごとに("<"を区切りに)再度改行してから、「og:」でgrepをかけている

コメント