ゆっくり jq – JSON processor –
気が付けば、「curl」ぐらいほぼ毎日使っている「jq」の備忘録。
いきなり脱線しますが、「nc」「curl」「wget」「jq」「awk」「sed」「xargs」「wc」「seq」とかって、魔法使いのツールですよね : -)
JSON => JSONL
$ cat users.json
{
"users": [
{
"id": 1,
"name": "hoge"
},
{
"id": 2,
"name": "moge"
},
{
"id": 3,
"name": "guga"
}
]
}
$ cat b.json | jq -c
{"users":[{"id":1,"name":"hoge"},{"id":2,"name":"moge"},{"id":3,"name":"guga"}]}
JSONL => JSON
$ cat users.json
{"users":[{"id":1,"name":"hoge"},{"id":2,"name":"moge"},{"id":3,"name":"guga"}]}
$ cat users.json | jq .
{
"users": [
{
"id": 1,
"name": "hoge"
},
{
"id": 2,
"name": "moge"
},
{
"id": 3,
"name": "guga"
}
]
}
キー名を変更
bananaをpaineに変更。
- paineと言うキー名に、bananaの値をコピー。
- del()関数で、bananaを削除。
と、考えると理解しやすい。
$ echo '{ "fruits": { "apple": "1", "orange": "2", "banana": "3" }, "pets": { "dog": "1", "cat": "2" } }' | jq '. | .fruits.paine = .fruits.banana | del(.fruits.banana)'
{
"fruits": {
"apple": "1",
"orange": "2",
"paine": "3"
},
"pets": {
"dog": "1",
"cat": "2"
}
}