理系学生日記

おまえはいつまで学生気分なのか

jq を使って CSV を出力する

Qiita は API を提供しており、そこで抽出できるデータを Excel 化したかった。 これは jq の @csv を使うと容易に実現できます。

たとえば、ぼくの 9 月から今までの投稿のうち、興味がある部分を JSON Array として引き抜いたとします。

$ curl -sH "Authorization:  Bearer ${QIITA_TOKEN}" "https://qiita.com/api/v2/items?per_page=100&query=user%3Akiririmode%20created%3A%3E2019-09-01" \
  | jq -r '.[] | [.created_at, .title, .likes_count]'
[
  "2019-12-23T14:18:52+09:00",
  "Bloom Filterの数理",
  7
]
[
  "2019-09-22T19:35:50+09:00",
  "EC2 Instance Connect とは何なのか",
  0
]
[
  "2019-09-22T19:33:23+09:00",
  "非JSONの文字列が含まれるファイルに対してjqを使いたい",
  1
]

これに対して @csv をさらにフィルタとして加えると、CSV 形式での出力が得られます。地味に便利です。

$ curl -sH "Authorization:  Bearer ${QIITA_TOKEN}" "https://qiita.com/api/v2/items?per_page=100&query=user%3Akiririmode%20created%3A%3E2019-09-01" \
  | jq -r '.[] | [.created_at, .title, .likes_count] | @csv'
"2019-12-23T14:18:52+09:00","Bloom Filterの数理",7
"2019-09-22T19:35:50+09:00","EC2 Instance Connect とは何なのか",0
"2019-09-22T19:33:23+09:00","非JSONの文字列が含まれるファイルに対してjqを使いたい",1