はじめに
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を取れます。複数行にわたっててもよしなにやってくれました。
言わずもがな。頭に@付けただけです(dateが解析に必要)
xargs
-n1で1コマンドあたり1つの引数に制限できるので、それぞれの行に対してdateを呼び出すのに使いました。
date
--date "@1408715718"とかやると、UNIX Timeを読める形式に直してくれます
awk使うバージョン
awkで日付処理してる
cat orig.txt | jq '.time' | gawk '{ strftime("%m/%d %H:%M",$0); }' | paste -d , - orig.txt