我在文件中有以下内容(我称之为“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。
答案 0 :(得分:51)
应该是:
jq '.[].aux[].def' file.json
.[]
遍历外部数组.aux[]
,然后遍历每个节点的aux
数组,.def
打印其.def
属性。
这将输出:
"I want this"
如果你想删除双引号-r
(--raw
)到jq
:
jq -r '.[].aux[].def' file.json
输出:
I want this