如何使用jq将JSON中的两个数组合并为指定格式的CSV?
用jq将JSON数组转换为对应行的CSV格式
需求说明
现有如下JSON数据:
echo '{"a": [1, 3, 5, 7, 9 ], "b": [2, 4, 6, 8, 10 ]}' | jq
输出的JSON结构:
{ "a": [ 1, 3, 5, 7, 9 ], "b": [ 2, 4, 6, 8, 10 ] }
希望得到如下格式的CSV:
1,2 3,4 5,6 7,8 9,10
实现命令
可以通过以下jq命令直接实现需求:
echo '{"a": [1, 3, 5, 7, 9 ], "b": [2, 4, 6, 8, 10 ]}' | jq -r '[.a, .b] | transpose[] | @csv'
命令解释
[.a, .b]:提取JSON中的a和b两个数组,组合成一个二维数组transpose:对二维数组进行转置操作,将原数组的列转换为行,得到[[1,2],[3,4],[5,6],[7,8],[9,10]][]:展开转置后的数组,逐个输出每一组元素@csv:将每组元素格式化为CSV格式-r:使用原始输出模式,避免CSV字符串被额外的引号包裹
内容的提问来源于stack exchange,提问作者learning-man
相关产品推荐
相关产品推荐

