VZユーザーのための,VWXによる正規表現利用のてびき
初出:nifty:FGALDC/MES/13/09142〜 (2002/06/18〜2002/07/21)
正規表現はたいていの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]キーを押して履歴を呼び出すことで,簡単に試してみることができます。