ファイルに次のものがあります(「myfile」と呼びます)。
[{
"id": 123,
"name": "John",
"aux": [{
"abc": "random",
"def": "I want this"
}],
"blah": 23.11
}]
次のように[
および]
なしで解析できます。
$ cat myfile | jq -r '.aux[] | .def'
I want this
$
しかし、[
と]
を使用すると、次のようになります。
$ cat myfile | jq -r '.aux[] | .def'
jq: error: Cannot index array with string
Jqを使用して[
および]
を処理するにはどうすればよいですか? (別のツールでそれらを解析できると確信していますが、jqの正しい使用法を学びたいです。
そのはず:
jq '.[].aux[].def' file.json
.[]
は外側の配列を繰り返し処理し、.aux[]
その後、すべてのノードのaux
配列と.def
は.def
プロパティ。
これは出力します:
"I want this"
二重引用符を削除する場合は、-r
(--raw
)からjq
へ:
jq -r '.[].aux[].def' file.json
出力:
I want this