「ラジオドラマ資源」整備の必要に迫られて急造しました. 用途は,比較的大きめのファイルから, パターンにマッチした文字列を抽出するというものです. grepだと,行全体が抽出されてしまうので, 別の要素も混在するし,なにより後の編集が厄介だから. = mtchptn.def = by H_ear #if 0 パターンにマッチした文字列を抽出 #endif * mad for vz! 1 ^\ "" ?. (TC==WC)?{ &m(6) . } ;オープン可能か確認 (vw)??{ &m("No VWX !") . } ;VWX常駐を確認 &a("事前検索必須です.実行します") (r-1)?. ;確認 mp[=2, RX[+, ;正規表現,検索モード Ei[-, Ej[-, ;インデント不可 ; ps[=pa, mb-, ;ブロックモード解除 ; ---- set pattern mx[+, #F &Cr mx], ;パターン設定 (r|1+1)??>z ;[ESC]/[CR] ; ---- open a file for output ---- #R "nul" #m (s)?'y' #W ;出力先をオープン :l ; ---- main loop ---- &m("[Shift]長押しで中断できます. $ 経過 ==>%10lu / %lu",wa..57,wa..58,wa..39,wa..40) #c ;カーソル位置以降が対象 (r||ks&1)?>z ;[Shift]長押しで中断 ; ---- マッチした文字列を取得・出力 cx-, ax=$E908, bx='VW', &i($2F) ;マッチした文字列長の取得 #b cp+=cx, #k ;マッチした文字列を取得 #W #i #m &d &s #W ;作業経過を見せる >l :z ; ---- exit ---- ; ps], Ej], Ei], RX], mp], #W &m("終了しました. Sort/Uniq を実施してください.") &d #] . * [Variables] ax bx cx [Buffers] ps (初期設定では事前検索の履歴を使えるので自前バッファ等不使用) (pa as ps) 初期無効 [History] 2022/08/26 0.10 テスト初版 [Notes] 処理対象は敢えてカーソル以降としたのは,そういうファイルだから.(謎) 途中経過が百分率表示でないのは,対象ファイルのサイズを明示したいため. 俳優さんの表記はネットで調べればかなり分かりますが,スタッフさんは 公式サイトやFM誌などに掲載されるだけなので,過去のものは調べ難い. そのため手元のデータから抽出してデータベースを作る必要があります. 要素単位でカンマやピリオドの区切りさえあれば, [^,.]+:演出 …のようなパターンにより,まとめて抽出できます.
めざらさん ほほう、文字(列)グレップ! いいですね! ; ---- マッチした文字列を取得・出力 cx-, ax=$E908, bx='VW', &i($2F) ;マッチした文字列長の取得 #b cp+=cx, #k ;マッチした文字列を取得 #W #i #m &d &s #W ;作業経過を見せる >l 使う場面、あるかな? コレクションさせていただきます。 いただきます。m(__)m うん、こういうフィルター的マクロ、好き。直接編集されると(insfile.def的に) うーん、別のツール使いたい、元のファイルに元のまま残っていて欲しい、とか 思うんですよねぇ。 空打ちキャンセルとか、さすがです!
手元の izgrep.doc の冒頭には、以下のようなメモが。 外からもやれますね。 -------------------------------------------- izgrep -g -m "<[0-9]+>" 文字グレップは、izgrep -g -m "注、[0-9]+" 対象ファイルのように使う。 izgrep -g -m "^[0-9][0-9]? " 対象ファイルのように使う。 -------------------------------------------- "注、[0-9]+" というのは、明らかに翻訳書用でしょう。 しばらくやってないけど、何かでやれたよなぁ、と。 たしかsedみたいな機能が入っていた異色のgrepだったような……。 -------------------------------------------- -n: line No./ No auto print 2つの意味を持つオプションである。 (1)-s (sub/replace) が指定されている時 デフォルト出力を抑制する。 -n が無いときは、マッチしない行も出力するが -n の時は、マッチした行のみ出力する。 sed "s/expr/str/g" -> izgrep -sg expr str sed "s/expr/str/" -> izgrep -s expr str sed -n "s/expr/str/p" -> izgrep -sn expr str -------------------------------------------- 使ったことありませんが、これを思い出させてくれたことに感謝する日が 来るかもしれませんね。
>当時は grep の機能の違いはよく知らなくて
>あ,文太さん! 結構使ってるじゃないですか!
>小物マクロの住所録 2003.02
>で,izgrep をググったところ,現役の LXer のブログを発見。
>まだ使えているLX個体があるとは,驚き。
> 使う場面、あるかな?
> 「ラジオドラマ資源」整備の必要に迫られて急造しました.
> &m("[Shift]長押しで中断できます. $
> (r||ks&1)?>z ;[Shift]長押しで中断
> &m("終了しました. Sort/Uniq を実施してください.")
> こういうあまりネットで話題にならない情報って、
> 一部の陰謀論者というかマスコミ嫌いの人たちにはリーチしない
> 自動でSort/Uniqしないのは、何かわけがあるのですか?
> > 自動でSort/Uniqしないのは、何かわけがあるのですか?
> わたしは単機能ツールを順に組み合わせてゆくのが好きだからかも。
> 処理途中を確認しないと気がすまないというか,過程を念の為確認したいというか,最初の出力結果が所期のものでなければ後の処理は無駄になるのではないかという【疑り深い】性格だからではないでしょうか。
> > 一部の陰謀論者というかマスコミ嫌いの人たちにはリーチしない
> こちらは具体的にどういうことかピンときませんでしたが……。