美文网首页
【jq】用jq处理json数据,输出csv格式

【jq】用jq处理json数据,输出csv格式

作者: Bogon | 来源:发表于2024-09-01 15:20 被阅读0次

file.txt 文本中的每条数据格式如下,如何 用shell命令输出每行中的 _id 、 groupName 、creator 和manager 字段?

{"_id":"AAAAAAAAAAA","groupUserNickNameChgDate":{"$numberLong":"0"},"historyMsg":0,"extGroup":false,"type":2,"headerId":"662e8762d08e3350658c0558","adminAudit":0,"forbidChangeName":0,"robotDate":{"$numberLong":"0"},"banned":0,"createDate":{"$date":"2018-07-06T02:20:44.759Z"},"micDisable":0,"creator":"BBBBBBBBBB","memberAtAll":1,"watermark":0,"mCallStatus":0,"manager":["CCCCCCCCCC"],"appUpdateTime":{"$numberLong":"0"},"addUserMark":0,"groupUserChangeDate":{"$date":"2024-04-28T17:29:06.043Z"},"groupName":"多人测试群","disable":false,"forbidCovertGroup":0,"mCallRecordStatus":0}
{
    "_id": "AAAAAAAAAAA",
    "groupUserNickNameChgDate": {
        "$numberLong": "0"
    },
    "historyMsg": 0,
    "extGroup": false,
    "type": 2,
    "headerId": "662e8762d08e3350658c0558",
    "adminAudit": 0,
    "forbidChangeName": 0,
    "robotDate": {
        "$numberLong": "0"
    },
    "banned": 0,
    "createDate": {
        "$date": "2018-07-06T02:20:44.759Z"
    },
    "micDisable": 0,
    "creator": "BBBBBBBBBB",
    "memberAtAll": 1,
    "watermark": 0,
    "mCallStatus": 0,
    "manager": ["CCCCCCCCCC"],
    "appUpdateTime": {
        "$numberLong": "0"
    },
    "addUserMark": 0,
    "groupUserChangeDate": {
        "$date": "2024-04-28T17:29:06.043Z"
    },
    "groupName": "多人测试群",
    "disable": false,
    "forbidCovertGroup": 0,
    "mCallRecordStatus": 0
}

你可以使用 jq 命令来提取这些字段。假设你的文件名是 file.txt,你可以用以下命令:

yum -y install  jq 
jq -r '._id, .groupName, .creator, .manager[]' file.txt

这将输出每行中的 _idgroupNamecreatormanager。如果你需要更复杂的格式或结构,可以调整 jq 的用法。

需要改造为以 csv 格式输出, title行为: _id, groupName, creator, manager

要将每行中的 _idgroupNamecreatormanager 提取出来,并以 CSV 格式输出,你可以使用 jq 工具来处理 JSON 数据,并结合 awk 或其他工具来格式化为 CSV。

假设你的文件名是 file.txt,可以使用以下命令:

jq -r '[._id, .groupName, .creator, (.manager | join(";"))] | @csv' file.txt

这个命令会:

  1. 使用 jq 读取 JSON 文件。
  2. 提取 _idgroupNamecreatormanager 字段。
    • (.manager | join(";"))manager 数组中的所有元素连接成一个用分号(;)分隔的字符串。如果 manager 不是数组,直接提取即可。
  3. 使用 @csv 将结果格式化为 CSV。

为了包含标题行,你可以先输出标题,然后再输出数据。可以用以下命令:

echo "_id,groupName,creator,manager"
jq -r '[._id, .groupName, .creator, (.manager | join(";"))] | @csv' file.txt

这样,第一行是标题行,后面的行是数据行。

相关文章

  • 优雅的查看json文件

    前面 jq是一个轻量级但是贼灵活的命令行json处理器.jq在json数据处理中很有用就像用awk处理文本一样。j...

  • Linux命令jq

    是什么 jq 是一个轻量级的json处理命令。可以对json数据进行分片、过滤、映射和转换 jq . 对json数...

  • 在shell中翻译

    直接使用脚本 使用前需要sudo apt-get istall jq需要jq的支持,用来解析格式json数据妈妈再...

  • shell学习

    1>jq内建函数 输出所有的keys 语法: jq keys 例如:cat json_raw.txt | jq ...

  • mac shell 修改json文件

    1.使用 jq brew install jq 2.json文件如下 3.遍历脚本 输出 用到了 jq 的 if ...

  • linux jq 命令

    jq 命令可以方便快捷的解析 json 格式的数据。下面几个例子简单的记录了 jq 命令的用法。其中 task_f...

  • centos7安装jq

    jq linux json格式化工具添加epel源

  • jq命令 - json文本处理

    jq可以对json数据进行分片、过滤、映射和转换 安装 提取信息 格式化展示原文 输出数组中的元素,可以使用[in...

  • mac shell 遍历json文件

    1.使用 jq brew install jq 2.json文件如下 3.遍历脚本 输出: 注1: seq 用于...

  • json文件格式化工具

    前言 有时候获取到的json文件没有经过格式化,可以安装一个格式化工具进行格式化。 jq是json文件处理以及格式...

网友评论

      本文标题:【jq】用jq处理json数据,输出csv格式

      本文链接:https://www.haomeiwen.com/subject/tbpcljtx.html