JSON形式のデータをカラーで見やすく表示したり、データを抽出したりするコマンド。
例
$ echo '{"name": "taro", "age": 30, "sex": "male"}' | jq .{ "sex": "male", "age": 30, "name": "taro"}
Ubuntuでは
sudo apt install -y jq
(Ubuntu 20.04 で確認)
CentOSでは
sudo yum install -y jq
(CentOS 8 で確認)
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 .nametaro
要素がまた構造を持っていても大丈夫。
$ 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
-C
less
コマンドなどパイプをつなげるとカラー表示してくれない。しかしこのオプションを付ければカラー表示を強制してくれる。-M
-r
""
で囲まずに直接出力-S
less
で見るには2014/10/14-C
を付けてカラー表示を矯正させ、less
コマンドでは-R
オプションを付けてエスケープシーケンスを有効にするとよい。
例
curl -s 'http://www.gaitameonline.com/rateaj/getrate' | jq -C . | less -R