📝
jq でsubstrみたいに文字列を取得する
jq
jq 便利ですね。ってもう枯れた話題ですが、いまさらです。
でもちょっとやりたかったことでハマったのでそのメモ。
substrみたいに文字列を取得したかった
マニュアル嫁ってことで、30分位格闘しましたw。そしてやりたいことが簡単にできることを再確認しました。
こんなこと
具体的には、下記のjsonの日付(dateTime)文字列を分解して日付書式にしたかっただけ。まあやり方は、色々あるんですがシンプルにしたかったなということで格闘してました。
test.json
{
"dateTime": "20170904152510701",
"tempoCode": "Y123456"
}
を、下記のように。
2017/09/04 Y123456
sed使ったちょっとえぐい感じw
cmd
jq -r '[.dateTime, .tempoCode] | @tsv' | sed 's/^\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{3\}\)/\1\/\2\/\3/g'
かっこ悪いw。なので
cmd
jq -r '[ .dateTime[:4] + "/" + .dateTime[4:6] + "/" + .dateTime[6:8], .tempoCode ] | @tsv '
できたーw
便利やわ
json データを加工するために php やら perl で書いていたことを思うとコマンドでできて非常に便利、しかももっと高度なこともできる。
Discussion