[jq] CSV ファイルをパースして JSON に変換する
作成日: 2022年03月04日
jq の組み込み関数である split
を使用すると、入力された内容をカンマ区切りでパースすることができます。この機能を使って JSON に変換することができます。下記に具体的なコマンドの例となります。
まず下記の内容の dummy.csv
というファイルを作成します。
1,"Tom",15
2,"Bob",30
3,"Alice",20
下記のコマンドを実行します。
cat dummy.csv | tr -d '"' | jq -R 'split(",") | {"id": .[0] | tonumber, "name": .[1], "age": .[2] | tonumber}'
説明
- 出力される JSON でダブルクォーテーションが二重になってしまうので
tr
コマンドでダブルクォーテーションを削除しています。 - jq の
-R
オプションで入力を JSON とみなさないようにしています。 split(",")
で入力を CSV ファイルとしてパースします。- CSV ファイルで数値型の値は
tonumber
を使って数値型になるように変換しています。
実行結果
{
"id": 1,
"name": "Tom",
"age": 15
}
{
"id": 2,
"name": "Bob",
"age": 30
}
{
"id": 3,
"name": "Alice",
"age": 20
}