微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅打印数组属性内的对象的一个​​属性以及jq中数组属性的同级属性

如何解决仅打印数组属性内的对象的一个​​属性以及jq中数组属性的同级属性

我有一个看起来像这样的json文件

[
  {
    "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 举报,一经查实,本站将立刻删除。