今日書いたプログラム(というか)。
#!/usr/bin/env perl #log.pl use strict; use warnings; open (FILE, 'buffer.txt'); while (my $line = <FILE>) { if ($line =~ /^(.+[^\/]..)\s(..:[^\/].+)$/) { print "$2\t$1\n"; } else { print "\t$line"; } } close (FILE);
えっとこれが何かっていうと、毎日細かく作業ログを取っているんだけど、その書式っていうのが
あーだこーだ 03:10:04 どうしたこうした 12:55:09 やっぱやめた 18:08:12
とかいう感じの内容で、これは「テキスト(半角スペース)タイム」なんだけど、
それを今度はエクセルに全部入れてるんだけど、そのときには
03:10:04 あーだこーだ 12:55:09 どうしたこうした 18:08:12 やっぱやめた
という風に「タイム(タブスペース)テキスト」という風にしたくて、これまでその変換はMacVimのqレコードと@を使ったマクロ設定でやっていたんだけど、それだと結構ストローク数がばかにならないので、なんかプログラムに通して一括的にやりたいなあ、と思ってやった。
具体的には、Perlプログラムに書いた「buffer.txt」っていうのがそのログ形式で取った前者のやつで、
それを実行するときにターミナルで
$ perl log.pl > log.txt
とかにすると、
$ open log.txt
ってやったときに後者の方が出てくる。
誰も喜ばない自分だけのためのものだが今のところ便利。
こういうのを、じゃあRubyで書いたらどうなるか、とかいろいろやると自習的にも面白そう。
(それ以前に上記の正規表現など自体をもっと洗練できる気はするが)