2014/12/28

想像の5倍便利! from_unixtime するフィルター

年末ですね。この時期は面白いテレビが目白押しでたまりませんね!

さて、またひとつ俺得のモジュールを書きましたYO!

from_unixtime

select をターミナルから直で実行することってよくありますよね?

$ db_fetch HANDLE --sql 'select * from foo_table where id=1'
id          1
name        John
created_at  1419702037
updated_at  1419702037

こういう時、unixtime が入ってるカラムに対して SQL で from_unixtime をマメに書くのがすごく面倒くさいので、その名も from_unixtime というフィルタコマンドを書いてみました。

pipe して使うと、以下のようによしなに日付変換したものを表示してくれるようになります。

$ db_fetch HANDLE --sql 'select * from foo_table where id=1' | from_unixtime
id          1
name        John
created_at  1419702037(Sun, 28 Dec 2014 02:40:37 +0900)
updated_at  1419702037(Sun, 28 Dec 2014 02:40:37 +0900)

from_unixtimeApp::FromUnixtime に同梱されています!

表示のカスタマイズ

日付形式が気に食わないとか、'(' を変えたいという場合は、以下のようにオプションが用意されています。

$ db_fetch HANDLE --sql 'select * from foo_table where id=1' | from_unixtime --format='%Y-%m-%d %H:%M:%C' --start-bracket=' [' --end-bracket=']'
id          1
name        John
created_at  1419702037 [2014-12-28 02:40:20]
updated_at  1419702037 [2014-12-28 02:40:20]

以下のように、value カラムがよしなには変換されない場合、--re オプションを利用します。

$ db_fetch HANDLE --sql 'select * from bar_table where id=1' | from_unixtime
id          1
name        John
value       1419702037
updated_at  1419702037(Sun, 28 Dec 2014 02:40:37 +0900)

$ db_fetch HANDLE --sql 'select * from bar_table where id=1' | from_unixtime --re value
id          1
name        John
value       1419702037(Sun, 28 Dec 2014 02:40:37 +0900)
updated_at  1419702037(Sun, 28 Dec 2014 02:40:37 +0900)

rc 設定ファイル

表示形式のカスタマイズや、--re オプションの設定は、.from_unixtimerc ファイルに記述しておけば、毎度書く必要はありません。

.from_unixtimerc の置き場所はホームディレクトリか /etc/ か $ENV{CMDRC_DIR} あたりにあれば良しなに読んでもらえます。設定のフォーマットは Config::Simple で読める形式ならなんでも OK です。

では、みなさま良いお年を~

サイト内検索