JSONログのUNIX Timeを読みやすくする

はじめに

JSONでログためてると、

{"time": 1408715718, ...}
{"time": 1409718175, ...}
...

みたいなデータを人間が見えるようにしたいとかいう要望は結構あると思いますが、そんなときにシェル1行で見えるようにしたメモ

コマンド

cat orig.txt | jq '.time' | sed -e "s/^/@/" | xargs -n1 date "+%m/%d %H:%M" --date | paste -d , - orig.txt

解説

jq

JSONパーサ。かなり便利で、.がルート要素、.timeでルート直下のtimeを取れます。複数行にわたっててもよしなにやってくれました。

sed

言わずもがな。頭に@付けただけです(dateが解析に必要)

xargs

-n1で1コマンドあたり1つの引数に制限できるので、それぞれの行に対してdateを呼び出すのに使いました。

date

--date "@1408715718"とかやると、UNIX Timeを読める形式に直してくれます

paste

行毎に結合できます

awk使うバージョン

awkで日付処理してる

cat orig.txt | jq '.time' | gawk '{ strftime("%m/%d %H:%M",$0); }' | paste -d , - orig.txt