JSON 等のそれなりの構造を持ったデータのストリームに対して awk 的に使えるツール書いた
書いた。
https://github.com/nakamuray/owk
インストールは cabal install
で。一般ユーザーで実行したなら ~/.cabal/bin/owk
に入る。
Twitter の timeline から自分宛の mention を探す例:
$ owk -io json -m 'for $.entities.user_mentions: m -> { m.screen_name == "nakamuray" ? { print $; next () } }' < timeline.json
Redmine の issues で更新のあったものを表示する例:
$ while :; do curl -s -H 'X-Redmine-API-Key: XXXXX' http://redmine/issues.json\?sort=updated_on\&assigned_to_id=me; sleep 60; done | \
owk -io json 'last = ref ""; main = $ -> { for $.issues: i -> { i.updated_on > last () ? { print $; last := i.updated_on } } }'
こういうツールを書くには Haskell は良い。