JSON の結果をテーブル形式に変換して出力する
jq と column
コマンドを使って、JSON 形式のファイルをテーブル形式で表示する。
$ cat << EOL > list.json
[
{
"id": "aaa",
"name": "Aさん",
"age": 25,
"gender": "Male"
},
{
"id": "bbb",
"name": "BBBBB太郎",
"age": 19,
"gender": "Female"
}
]
EOL
こんな感じのファイルがある前提。
$ jq -r '(.[0] | keys_unsorted | @tsv), (.[] | map(.) | @tsv)' list.json | column -t
配列の1つ目のデータを使って、キーを抽出してヘッダを作る。それを @tsv
でタブ区切りにする。
さらにデータを @tsv
でタブ区切りにする。
単純にココまででタブ区切りのまま表示しても良いが、それをパイプして column -t
に渡してやれば、以下のように列のアラインメントが揃う。
id name age gender
aaa Aさん 25 Male
bbb BBBBB太郎 19 Female
# タブ区切りのみだと以下のようになる
id name age gender
aaa Aさん 25 Male
bbb BBBBB太郎 19 Female
こんな感じ。