这是我的json文件:
{
"ClientCountry": "ca",
"ClientASN": 812,
"CacheResponseStatus": 404,
"CacheResponseBytes": 130756,
"CacheCacheStatus": "hit"
}
{
"ClientCountry": "ua",
"ClientASN": 206996,
"CacheResponseStatus": 301,
"CacheResponseBytes": 142,
"CacheCacheStatus": "unknown"
}
{
"ClientCountry": "ua",
"ClientASN": 206996,
"CacheResponseStatus": 0,
"CacheResponseBytes": 0,
"CacheCacheStatus": "unknown"
}
我想将这些json转换为csv,如下所示。
"ClientCountry", "ClientASN","CacheResponseStatus", "CacheResponseBytes", "CacheCacheStatus"
"ca", 812, 404, 130756, "hit";
"ua", 206996, 301, 142,"unknown";
"ua", 206996, 0,0,"unknown";
请告诉我如何使用jq实现此目的?
我刚试过以下。但它不起作用。
jq 'to_entries[] | [.key, .value] | @csv'
此致 帕拉尼
答案 0 :(得分:2)
因为你想要所有的键值, 然后假设键在输入文件中以一致的顺序呈现,您可以简单地写:
jq -r '[.[]] | @csv' palanikumar.json
使用给定的输入,将生成以下CSV:
"ca",812,404,130756,"hit"
"ua",206996,301,142,"unknown"
"ua",206996,0,0,"unknown"
添加标题和尾随分号(如果你真的想要它们)留作(非常简单)练习。
如果键的顺序不同或可能有所不同,则可以使用以下内容生成合适的CSV,假设应使用输入流中第一个对象中键的顺序:
input
| . as $first
| keys_unsorted as $keys
| $keys, [$first[]], (inputs | [.[$keys[]]]) | @csv
适当调用jq将包括-n和-r命令行选项。
答案 1 :(得分:0)
查看这些链接
How to convert arbirtrary simple JSON to CSV using jq?
http://bigdatums.net/2017/09/30/convert-json-to-csv-with-jq/
(jq -r' .myarray | @ csv')