Vz resources : Regular Expression

耳より正規表現入門

VZユーザーのための,VWXによる正規表現利用のてびき
初出:nifty:FGALDC/MES/13/09142〜 (2002/06/18〜2002/07/21)

第16回  目次を出力してみよう (1) GREPの利用

正規表現はたいていのUNIX系ツールで使え,検索に特化したGREPもそのひとつです。「ファイル全体について(Global)正規表現(Regular Expression)にマッチする行を出力(Print)」するという名称のとおり正規表現を使用するのが前提ですから,正規表現の使えない検索プログラムで「○GREP」を名乗るのは間違いということになります。

VZにはWGREPというツールが付属していますので,これを使ってみましょう。

GREPはファイラーの実行メニューに登録するのが便利です。

vzfl.defの8番の実行メニュー,あるいは13番のファイルメニューです。

オプションはお好みで。

(「$(9)」はタブです。「n」はアイテム数に置き換えてください。)

8       "",13,n
        "C コピー$(9)copy %1 %2"
        ;;
        "WGREP検索$(9)WGREP $"%G$" %@2"

13      "",15,n
        "C コピー$(9)%!zcopy %[/s] %@1 %2%G"
        ;;
        "Wgrep search$(9)WGREP -i -j5 -s5 -t $"%G$" %@2"

あるいは,外部プログラムの起動が面倒な方は,次のマクロで擬似体験してください。編集テキストで起動すると検索文字列入力モードとなりますので,正規表現文字列を入力してください。作業ファイルにマッチした行を出力します。RX(正規表現検索モード)は強制的に有効になりますので,『\x』を前置する必要はありません。


----------^ esegrep.def ( date:2002-01-31 time:00:02 ) -----< cut here
= EseGrep.def v0.2 =
似非GREP
パターンにマッチした文字列のある行を抽出
グローバルオプションなし(論理行を抽出するため,あっても無意味)
* m
1 ^\ ""
        ?. mp[-, RX[+,                  ;検索モードを設定
        &m("%s",m="<<< 似非GREP >>>")   ;メッセージ
        #F &Cr                          ;検索文字列の設定
        (mp)??{ &m("<!> Cancel") >q }   ;設定されればmpが変化するはず
        mb-, ky[,                       ;ブロックモード解除,行位置記憶
        #M &Le(pu,wa+126)               ;開始位置を記憶
        (wt)?#W                         ;画面分割モードなら切替
        mx+, #R "nul" #m mx-,           ;作業ファイルをオープン
        &s #W                           ;作業ファイルだけを見せる
        #^ #> #r (r)??{ &> #> }         ;1行目のみ別途処理(1行目行頭対応)
 :c     #c (r)??{ &> >c }               ;2行目以降を繰り返し検索
 :z     &Le(wa+126,pu) #U               ;開始位置に戻る
        ky], #W                         ;カーソル行位置を戻して参照画面へ
 :q     RX], mp], &d #] &m(32) .

;-----  ループ用サブルーチン
        ;(注) サイレントで #k #i するときはブロックすること.
0:      #< #b #> #k                     ;複写
        #W #n #i &d &s                  ;窓換・挿入・表示
        #d #W &m(m)                     ;次行頭・窓換
*
----------$ esegrep.def ( lines:27 ) -----------------------< cut here

このテキストに出てくる正規表現をブロックして#G(^L)で取得してからEseGrep.defを起動し,入力窓で[UP]キーを押して履歴を呼び出すことで,簡単に試してみることができます。


The VZ resources. ©2002 by mezala. mailto:mezala@nifty.com