[xyzzy:03144] Re: テキストの処理について
- Subject: [xyzzy:03144] Re: テキストの処理について
- From: masahito henmi <henmi@xxxxxxxxxxxxx>
- X-mailer: Denshin 8 Go V321.2b5
"CtrlAltDel" <t68017@xxxxxxxxxxxxxxxxxxxxx> さん、こんにちは。masahito です。
| リンクをたどって赤塚さんと逸見さんのマニュアルをダウンロー
|ド、 ML の過去ログもダウンロードしました。これから目を通しま
|すが、過去ログが3000件以上あるので全部目を通すには時間
|がかかりそうです。やっと500件ほど読みましたが・・・うーん、先
|は長いなぁ。
ご苦労様です^^;
| 過去ログを整理しようと思い、 Perl でスクリプトを組み始めた
|のですが Perl ではディレクトリ内のファイル全てを調べる(つい
|でにソートする)のに
|
| opendir(work_dir,"ディレクトリのパス");
| @file_list = readdir(work_dir);
| closedir(work_dir);
| @file_list = sort @file_list;
|
|としてファイルのリストを作成しましたが、 Lisp のリファレン
|ス(逸見さんのところからダウンロードしたやつ)によれば、
|
| (sort (directory "ディレクトリのパス") #'string<)
|
|でわずか一行ですんでしまうのですね。なんか凄く Lisp のほう
|がシンプルな感じですね。正規表現もサポートされているみたいだ
|し、ディレクトリ内のメールのFromとSubjectと本文だけを抜き出し
|て一つのファイルにまとめる、とかいう作業は Lisp でも簡単にで
|きるのでしょうか?
うーん、私も知りたい^^;
やり方としては2通りあると思います。
1)CommonLisp風に、ごしごしやる。
C言語でfopen/fclose/fgetsってありますよね。
あれでやるような感じ。
1行ずつ取り出したのを文字列として処理します。
2)Editorのマクロで、ごしごしやる
ファイルを開く、
適当に置換とか、削除とかする。
ファイルをSAVEする
reference.txt の3711行目あたりのコレ
■ファイル操作
(defun find-modify-save-test (file)
(interactive "f")
(let (temp-buffer)
(unwind-protect
(progn
;; テンポラリのバッファを作って
(setq temp-buffer (create-new-buffer "*foo*"))
;; カレントバッファにして
(set-buffer temp-buffer)
;; ファイルを読み込む
(insert-file-contents (merge-pathnames file *src-dir*))
(goto-char (point-min))
;; ここでいろいろやる
;; ファイルに書く
(write-file (merge-pathnames file *dst-dir*)))
;; バッファを作っていたら消す(kill-bufferはうるさいのでdelete-bufferで)
(when temp-buffer
(delete-buffer temp-buffer)))))
| ファイル操作はなんとなく分かったのですが、テキスト(文字列)
|の処理の仕方がいまいち良く分かりません。Perlでは一行
|ずつ読み込んで、ヘッダとかの要らない部分を除くようにしていた
|のですが、Lisp ではどうやるのでしょうか?Perlでいうm//(パター
|ンマッチ)とかs///(パターンマッチ&置換)に当たるものがあるの
|でしょうか?
scan-buffer
■perform-replace
■replace-string
このあたりかなーー
良いサンプルコードができらた「脳たりんプロジェクト」に登録させて
ください m(_ _)m
http://www.netlaputa.ne.jp/~henmi/notarin/index.html
私の個人的な、覚書なのですが。・・・のーみそ不足してますもんで(笑)
PERLも募集しております。さっぱりわからん>PERL
------------------------------------------------------------
逸見雅人 Masahito Henmi henmi@xxxxxxxxxxxxx
♪あなたの願いも仕事もうまくいきますように・・・