チラシを配った実績は, 実際の作業をしながら 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 の上でも似たような感じで使える.