如何解决仅打印数组属性内的对象的一个属性以及jq中数组属性的同级属性
[
{
"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)\""
'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。