如何将嵌套堆叠数组(矩阵)合并为CSV?用jq实现指定JSON转CSV
用jq将指定JSON转换为目标CSV格式
直接使用以下jq命令即可实现需求:
echo -e '{"a": [[1,7],[2,6]],"b": [[1,3],[3,4]]}' | jq -r ' # 收集所有唯一的连接键k并排序 ([.a[][0], .b[][0]] | unique | sort) as $ks # 输出表头 | "k, a, b" # 遍历每个k,匹配对应的a、b值,无匹配则用"-"填充 , ($ks[] | "\(.), \((. as $k | .a[]? | select(.[0] == $k) | .[1] // "-")), \((. as $k | .b[]? | select(.[0] == $k) | .[1] // "-"))")'
命令说明
- 从
a和b数组中提取所有第一个元素(即连接键k),去重后排序得到完整的k列表。 - 先输出指定格式的表头。
- 逐个遍历每个k值,分别在
a、b数组中查找对应k的第二个元素,找不到则用-替代,最后按CSV格式拼接每行内容。
执行后输出结果与需求完全一致:
k, a, b 1, 7, 3 2, 6, - 3, -, 4
内容的提问来源于stack exchange,提问作者Hedgehog
相关产品推荐
相关产品推荐

