アフィリエイト広告を利用しています

2017年05月24日

Emacs: チラシ配布記録を付ける ── replace-regexp 関数

チラシ配りの記録に関して Emacs で正規表現を使った. メモしておく.

チラシを配った実績は, 実際の作業をしながら iPhone のメモアプリに

2017/5/23 14:30 - 16:40 200 枚。残枚数 1000 枚。
○○町 1-23-45〜1-67-89 (○○町 1 丁目終了)。□□町 2-34-56〜2-78-90 まで。
次回 □□町 2-79-1 から。

という形式で記録している. このような一日毎の記述が, 配った日数分だけメモ内に書き込まれていくことになる.
これを Mac 上の Org ファイル (たとえば report.org とする) に一日分を Org モード (org-mode) の 1 つのノードとして

** 2017/5/23 14:30 - 16:40
200 枚 (残枚数 1000 枚)
○○町 1-23-45〜1-67-89 (○○町 1 丁目終了)。□□町 2-34-56〜2-78-90 まで。
次回 □□町 2-79-1 から。

の形式で書き写したい.

この処理はメモアプリの記録部分を Emacs で開いた report.org ファイルにコピー & ペーストしてから, replace-regexp 関数を使って次のようにすれば一括でできる.

M-x replace-regexp
Replace regexp: ^\(2017/[0-9]+/[0-9]+\)[ ^I]+\([0-9: ^I-]+\)[ ^I]+\([0-9 ^I]+枚\)。\(残枚数[0-9 ^I]+枚\)。^J\(.*\)^J\(.*\)^J
Replace regexp ... with: ** \1 \2^J \3 (\4)^J \5^J \6^J

※: ^I は TAB コード, ^J は Ctrl-J である. それぞれ Ctrl-Q TAB, Ctrl-Q Ctrl-J で入力できる (Ctrl-J については $HOME/.emacs.d/init.el 内で

(global-set-key "\C-j" 'newline-and-indent)

のように設定していることによる).

"14:30 - 16:40" は正規表現 "[0-9: ^I-]+" で表わすことができるが, これを最初 "[0-9: ^I\-]+" とやってうまく行かず困った. 実は "-" はエスケープする必要は無いのだった.

正規表現をまともに使うのは多分 3 年振りくらいだろう. UNIX を勉強し始めた頃に戻ったみたいで楽しい.
やはり非常に便利だ.
記述形式に関しては Emacs 独自の部分はあるが, 基本の考え方は同じなのでシェルや vi の上でも似たような感じで使える.
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/6297716

この記事へのトラックバック
ファン
検索
<< 2024年12月 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(44)
コンピューター(211)
(1460)
借金(8)
勉強(13)
(13)
数学(97)
運動(8)
日常生活(1407)
(204)
健康(38)
読書(21)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村