この行から「名前」の値を取得する必要があります。
"snapshots": [{"name":"sLVZt","user":"comment","current":"n","created":"2015-03-11 05:28:02"},{"name":"ubg9x","user":"test2",{"name":"lo3Qp","user":"test3","current":"y","created":"2015-03-11 06:02:46"}]}
私は出力が次のようになりたいです。
sLVZt
ubg9x
lo3Qp
ベストアンサー1
JSON文書が有効であるとします。
{"snapshots":[{"name":"sLVZt","user":"comment","current":"n","created":"2015-03-11 05:28:02"},{"name":"ubg9x","user":"test2"},{"name":"lo3Qp","user":"test3","current":"y","created":"2015-03-11 06:02:46"}]}
または(非データスペースはフォーマットに依存しないため)
{
"snapshots": [
{
"name": "sLVZt",
"user": "comment",
"current": "n",
"created": "2015-03-11 05:28:02"
},
{
"name": "ubg9x",
"user": "test2"
},
{
"name": "lo3Qp",
"user": "test3",
"current": "y",
"created": "2015-03-11 06:02:46"
}
]
}
jq
次に、次のように使用します。
$ jq -r '.snapshots[].name' file.json
sLVZt
ubg9x
lo3Qp
name
これにより、配列の各要素のキー値が抽出されますsnapshots
。
さまざまな方法で他のキーの値に基づいて結果を簡単にフィルタリングすることもできます。
$ jq -r '.snapshots[] | select(.current == "y").name' file.json
lo3Qp
$ jq -r '.snapshots[] | select(.current != "n").name' file.json
ubg9x
lo3Qp