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

bash – 使用jq以CSV格式提取值和格式

我有以下JSON文件

{
"data": [
    {
        "displayName": "First Name",
        "rank": 1,
        "value": "VALUE"
    },
    {
        "displayName": "Last Name",
        "rank": 2,
        "value": "VALUE"
    },
    {
        "displayName": "Position",
        "rank": 3,
        "value": "VALUE"
    },
    {
        "displayName": "Company Name",
        "rank": 4,
        "value": "VALUE"
    },
    {
        "displayName": "Country",
        "rank": 5,
        "value": "VALUE"
    },
]
}

我想要这种格式的CSV文件

First Name, Last Name, Position, Company Name, Country
VALUE, VALUE, VALUE, VALUE, VALUE, VALUE

这只能使用jq吗?我没有任何编程技巧.

解决方法:

jq有一个过滤器@csv,用于将数组转换为CSV字符串.此过滤器考虑了与CSV格式相关的大多数复杂性,从字段中嵌入的逗号开始. (jq 1.5有一个类似的过滤器@tsv,用于生成制表符分隔值文件.)

当然,如果标题和值都保证没有逗号和双引号,那么可能不需要使用@csv过滤器.否则,使用它可能会更好.

例如,如果’公司名称’是’史密斯,史密斯和史密斯’,
如果其他值如下所示,使用“-r”选项调用jq将生成有效的CSV:

$jq -r '.data | map(.displayName), map(.value) | @csv' so.json2csv.json
"First Name","Last Name","Position","Company Name","Country"
"John (""Johnnie"")","Doe","Director, Planning and Posterity","Smith, Smith and Smith","Transylvania"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐