q とは何か
ググラビリティが非常に低そうですが、有用度は非常に高いツールです。
CSV/TSVに対してSQL(like)なクエリを発行できます。
導入する
OSXでの導入方法
(私の使っている)OSXではhomebrewで導入できます。
brew install q
その他のOSの場合の導入方法
公式ページのインストール手順を確認して下さい。
使う
データを準備する
UTF-8であれば対応しているようですので、郵便番号CSVをダウンロードしてUTF-8へ変換します。
curl -vs http://www.post.japanpost.jp/zipcode/dl/oogaki/zip/ken_all.zip 2>/dev/null\
| tar -xvf- -O - 2>/dev/null\
| nkf -w > ken_all.csv
クエリを発行する
郵便番号が最も多い都道府県はどこか
q -d',' "select count(c7) as c,c7 from ken_all.csv group by c7 order by c desc"|head -n 10
8245,北海道
7525,愛知県
6672,京都府
5435,新潟県
5217,兵庫県
3934,福島県
3843,大阪府
3808,東京都
3588,千葉県
3368,岐阜県
郵便番号が最も多い市区町村はどこか
q -d',' "select count(c7||c8) as c,c7||c8 as ct from utf-8.csv group by ct order by c desc"|head -n 10
1147,富山県富山市
836,岐阜県岐阜市
775,東京都港区
753,新潟県上越市
696,東京都新宿区
660,京都府京都市上京区
630,京都府京都市伏見区
601,京都府京都市下京区
582,新潟県長岡市
557,京都府京都市中京区
ToDo
JOINが使えるのですが、使えるネタを見つけていません…。