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"

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...