jq コマンド 2021/01/18
JSON形式のデータをカラーで見やすく表示したり、データを抽出したりするコマンド。
例
$ echo '{"name": "taro", "age": 30, "sex": "male"}' | jq .
{
"sex": "male",
"age": 30,
"name": "taro"
}
インストール 2021/01/18
Ubuntuでは
sudo apt install -y jq
(Ubuntu 20.04 で確認)
CentOSでは
sudo yum install -y jq
(CentOS 8 で確認)
基本的な使い方 2014/10/17
JSON全体を表示。
$ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' | jq .
{
"bar": {
"い": 20,
"あ": 10
},
"foo": [
"abc",
"def"
],
"age": 30,
"name": "taro"
}
要素を取得。
$ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' | jq '.["name"]'
"taro"
こうも書ける。省略の記法なのかな。
$ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' | jq .name
"taro"
-r
オプションを付けると、結果が文字列の場合にJSON形式ではなく、文字列を直接出力してくれる。
$ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' | jq -r .name
taro
要素がまた構造を持っていても大丈夫。
$ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' | jq '.["foo"]'
[
"abc",
"def"
]
要素の要素を取得。
$ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' | jq '.["foo"][0]'
"abc"
$ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' | jq '.["bar"]["あ"]'
10
オプション 2021/01/18
-C
- デフォルトではカラーで表示してくれるが、
less
コマンドなどパイプをつなげるとカラー表示してくれない。しかしこのオプションを付ければカラー表示を強制してくれる。 -M
- カラー表示を無効にする
-r
- 文字列の場合に
""
で囲まずに直接出力 -S
- オブジェクトの中のキーをソートする
色付きでless
で見るには
2014/10/14
-C
を付けてカラー表示を矯正させ、less
コマンドでは -R
オプションを付けてエスケープシーケンスを有効にするとよい。
例
curl -s 'http://www.gaitameonline.com/rateaj/getrate' | jq -C . | less -R