如何在UNIX中使用jq将JSON转换为tsv?

时间:2018-09-10 10:49:30

标签: json csv unix jq

我需要将此JSON转换为TSV格式。我有一个这样的源文件:

{
  "event": "log",
  "timestamp": 1535306331840,
  "tags": [
    "info"
  ],
  "data": {
    "_id": "A301180827005852329209020",
    "msisdn": "6282134920902",
    "method": "get",
    "url": "/api/tcash/balance",
    "timeTaken": 32,
    "channelid": "UX"
  },
  "pid": 7920
}

然后我想将其转换为包含以下列的tsv:

event, timestamp, tags, _id, msisdn, method, url, timeTaken, channelID, pid 

1 个答案:

答案 0 :(得分:0)

您只需要构造一个原子值数组。由于.tags不是原子的,因此在下文中,我假设(如@chepner所建议的那样)我们可以使用.tags|join(","),尽管您可能想使用其他内容,例如.tags|@csv

[.event, .timestamp, (.tags | join(","))]
+ (.data|[._id, .msisdn, .method, .url, .timeTaken, .channelID])
+ [.pid]
| @tsv