使用jq将JSON转换为CSV [英] Convert a JSON into CSV using jq
问题描述
我有一个json文件,该文件存储在环境变量temp中.
I have a json file, which is stored in an environment variable temp.
{
"users": [
{
"username": "jack",
"email": "jack@somewhere.com",
"total running apps": "1",
"api-mock-app": "0",
"flogo": "1",
"ipaas": "0",
"nodejs-app": "0"
},
{
"username": "jill",
"email": "jill@somewhere.com",
"total running apps": "1",
"api-mock-app": "0",
"flogo": "1",
"ipaas": "0",
"nodejs-app": "0"
}
]
}
当我使用此命令将此JSON转换为CSV
{
"users": [
{
"username": "jack",
"email": "jack@somewhere.com",
"total running apps": "1",
"api-mock-app": "0",
"flogo": "1",
"ipaas": "0",
"nodejs-app": "0"
},
{
"username": "jill",
"email": "jill@somewhere.com",
"total running apps": "1",
"api-mock-app": "0",
"flogo": "1",
"ipaas": "0",
"nodejs-app": "0"
}
]
}
When i am converting this JSON into CSV using this command
jq -r '.users[] | [.username, .email, .total running apps, .api-mock-app, .flogo, .ipaas, .nodejs-app] | @csv' <<< $temp
我遇到以下错误.
jq:错误:语法错误,第1行的意外IDENT(Unix shell引用问题?):
.users [] | [.username,.email,.total运行的应用程序,.api-mock-app,.flogo,.ipaas,.nodejs-app] | @csv
jq:1个编译错误
jq: error: syntax error, unexpected IDENT (Unix shell quoting issues?) at , line 1:
.users[] | [.username, .email, .total running apps, .api-mock-app, .flogo, .ipaas, .nodejs-app] | @csv
jq: 1 compile error
有什么需要吗?
推荐答案
您需要引用您的列名,特别是因为它们包含空格和破折号.但是,您需要转义bash的引号:
You need to quote your column names, especially since they contain spaces and dashes. However you need to escape the quotes for bash:
jq --raw-output '.users[] | [.username, .email, ."total running apps", ."api-mock-app", ."flogo", ."ipaas", ."nodejs-app"] | @csv'
这篇关于使用jq将JSON转换为CSV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!