问题描述
我有一个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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!