问题描述
[
{
"code": "1234","files": [
{
"fileType": "pdf","url": "http://.../a.pdf"
},{
"fileType": "video","url": "http://.../b.mp4"
}
]
},{
"code": "4321","url": "http://.../c.pdf"
},"url": "http://.../d.mp4"
}
]
},{
"code": "9999","url": "http://.../e.pdf"
}
]
}
]
我只想打印fileType
数组中video
== files
的文件,以便最终得到如下输出:
1234,"http://.../b.mp4"
4321,"http://.../d.mp4"
1234,"http://.../a.pdf","http://.../b.mp4",4321,"http://.../c.pdf","http://.../d.mp4"
使用以下内容:
jq -r '.[] | select(.files[]?.fileType == "video") | [.code,.files[].url] | @csv'
我想知道如何在输出.files[]
的基础上过滤fileType
?
解决方法
下面的管道使该解决方案相当不言自明,假设人们了解基本语法和-r命令行选项:
< input.json jq -r '
.[]
| .code as $code
| .files[]
| select(.fileType == "video")
| "\($code),\"\(.url)\""
'