カテゴリー
【Jqコマンド実用編】押さえておきたいデータ入出力のためのJqのコマンドオプションまとめ
※ 当ページには【広告/PR】を含む場合があります。
2021/05/18
2022/09/30
押さえておきたいI/O系コマンドオプション
--slurp / -s
--raw-input / -R
--null-input / -n
--compact-output / -c
--raw-output / -r
Jqコマンドオプションの利用方法
--slurp/-sオプション
$ jq --slurp '.' << EOF
[
{"name": "バミ田 ポプ雄","age": 43,"branch": "本社"},
{"name": "ギャマ川 ノリュ実","age": 23,"branch": "福岡支店"},
{"name": "ドル間 ハム吉","age": 33,"branch": "広島支店"},
]
EOF
#👇出力
[
[
{
"name": "バミ田 ポプ雄",
"age": 43,
"branch": "本社"
},
{
"name": "ギャマ川 ノリュ実",
"age": 23,
"branch": "福岡支店"
},
{
"name": "ドル間 ハム吉",
"age": 33,
"branch": "広島支店"
}
]
]
$ jq --slurp '.' << EOF
{"name": "バミ田 ポプ雄","age": 43,"branch": "本社"}
{"name": "ギャマ川 ノリュ実","age": 23,"branch": "福岡支店"}
{"name": "ドル間 ハム吉","age": 33,"branch": "広島支店"}
EOF
#👇出力
[
{
"name": "バミ田 ポプ雄",
"age": 43,
"branch": "本社"
},
{
"name": "ギャマ川 ノリュ実",
"age": 23,
"branch": "福岡支店"
},
{
"name": "ドル間 ハム吉",
"age": 33,
"branch": "広島支店"
}
]
--raw-input/-Rオプション
$ jq --raw-input '.' << EOF
山田
佐藤
鈴木
EOF
#👇出力
"山田"
"佐藤"
"鈴木"
.[]
to_entries[]
$ jq --raw-input '[.] | to_entries | .[]' << EOF
山田
佐藤
鈴木
EOF
#👇出力
{
"key": 0,
"value": "山田"
}
{
"key": 0,
"value": "佐藤"
}
{
"key": 0,
"value": "鈴木"
}
$ jq --raw-input --slurp '.' << EOF
山田
佐藤
鈴木
EOF
#👇出力
"山田\n佐藤\n鈴木\n"
$ (jq --raw-input '[.] | to_entries[]' | jq --slurp '.')< <(
cat << EOF
山田
佐藤
鈴木
EOF
)
#👇出力
[
{
"key": 0,
"value": "山田"
},
{
"key": 0,
"value": "佐藤"
},
{
"key": 0,
"value": "鈴木"
}
]
#ちなみに以下のスクリプトでも同様
$ { jq --raw-input '[.] | to_entries[]' | jq --slurp '.'; }< <(
cat << EOF
山田
佐藤
鈴木
EOF
)
--compact-output/-cオプション
$ jq --compact-output '.' << EOF
[
{"name": "バミ田 ポプ雄","age": 43,"branch": "本社"},
{"name": "ギャマ川 ノリュ実","age": 23,"branch": "福岡支店"},
{"name": "ドル間 ハム吉","age": 33,"branch": "広島支店"}
]
EOF
#👇出力
[{"name":"バミ田 ポプ雄","age":43,"branch":"本社"},{"name":"ギャマ川 ノリュ実","age":23,"branch":"福岡支店"},{"name":"ドル間 ハム吉","age":33,"branch":"広島支店"}]
--null-input/-nオプション
$ jq --null-input '.' << EOF
[
{"name": "バミ田 ポプ雄","age": 43,"branch": "本社"},
{"name": "ギャマ川 ノリュ実","age": 23,"branch": "福岡支店"},
{"name": "ドル間 ハム吉","age": 33,"branch": "広島支店"}
{"name": "ホグ山 ミュン太","age": null,"branch": null}
]
EOF
#👇
null
$ jq --null-input '5 | . * 5 - 7 + (. - 3) * 2 | . - 17 | {"result": .} | [.]'
#👇出力
[
{
"result": 5
}
]
$ jq --null-input 'range(5) | {index: (. | tostring), odd_num: (. * 2 + 1)}'
#👇出力
{
"index": "0",
"odd_num": 1
}
{
"index": "1",
"odd_num": 3
}
{
"index": "2",
"odd_num": 5
}
{
"index": "3",
"odd_num": 7
}
{
"index": "4",
"odd_num": 9
}
--raw-output/-rオプション
@csv
$ jq '.[] | [.name, .age, .branch] | @csv' << EOF
[
{"name": "バミ田 ポプ雄","age": 43,"branch": "本社"},
{"name": "ギャマ川 ノリュ実","age": 23,"branch": "福岡支店"},
{"name": "ドル間 ハム吉","age": 33,"branch": "広島支店"},
{"name": "ホグ山 ミュン太","age": 44,"branch": "函館工場"}
]
EOF
#👇出力
"\"バミ田 ポプ雄\",43,\"本社\""
"\"ギャマ川 ノリュ実\",23,\"福岡支店\""
"\"ドル間 ハム吉\",33,\"広島支店\""
"\"ホグ山 ミュン太\",44,\"函館工場\""
$ jq --raw-output '.[] | [.name, .age, .branch] | @csv' << EOF
[
{"name": "バミ田 ポプ雄","age": 43,"branch": "本社"},
{"name": "ギャマ川 ノリュ実","age": 23,"branch": "福岡支店"},
{"name": "ドル間 ハム吉","age": 33,"branch": "広島支店"},
{"name": "ホグ山 ミュン太","age": 44,"branch": "函館工場"}
]
EOF
#👇出力
"バミ田 ポプ雄",43,"本社"
"ギャマ川 ノリュ実",23,"福岡支店"
"ドル間 ハム吉",33,"広島支店"
"ホグ山 ミュン太",44,"函館工場"
まとめ
--slurp / -s
--raw-input / -R
--null-input / -n
--compact-output / -c
--raw-output / -r
参考サイト
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー