LTSV が行指向な Key-Value フォーマットで捗る話
引き続き LTSV について。Text::LTSV はやってることは単にタブの split でしょうもないのだけど、せっかく作ったんだし何か利用方法はないかなと考えた。
LTSV のログは欠点があってそのままでは見づらいこと。
Text::LTSV でハッシュになるのだから、YAML とかで出力したらどうなるか試してみよう。さらに、YAML に色づけする YAML::Tiny::Color というのがあったぞ。
#!/usr/bin/env perl use strict; use warnings; use Project::Libs; use YAML::Tiny::Color qw/Dump/; use Text::LTSV; while (<>) { my $hash = Text::LTSV->parse_line($_); print Dump $hash; }
こんなスクリプトを書く。慣れてる人ならワンライナーでもいい。で、試しにパイプ & フィルタでかましてみた。
「・・・なにっ!?」 (中二)
これは!! 想像以上に見やすい!!
うお・・・これは予想外に捗るんじゃないか・・・。
Unix 哲学と LTSV
これはまさに LTSVフォーマットなログを fluentd + GrowthForecast で料理 - naoyaのはてなダイアリー でも引用した、
自己記述的なのでフィールド追加に対して開かれていて、かつ行指向なのでワンライナーで集計しやすい。 Unix 哲学の大事な点が形になっていると思う。素晴らしい。 / “Labeled Tab Separated Valueノススメ …” htn.to/hpw58Q
— Takuto Wadaさん (@t_wada) 2013年2月5日
という御大のツイートにある「Unix 哲学の大事な点」の賜ですなあ。先の例はパイプ & フィルタ、そして YAML にしたことで行列の縦横が変換された結果の grep でもある。オラ、なんか色々とよりベンリにできそうな気がしてきたぞ・・・。