如何在命令行中使用jq合并JSON列表?
用jq按行合并两个文件的JSON列表
可以通过paste配合jq实现按行对应合并,具体命令如下:
paste file1 file2 | jq -n 'inputs | .[0] + .[1]'
命令说明
paste file1 file2:将两个文件的对应行按顺序拼接,每行输出两个用制表符分隔的JSON列表jq -n 'inputs | .[0] + .[1]':-n参数让jq不自动读取输入,inputs处理每一行输入内容,将每行的两个JSON数组解析后相加合并
执行命令后会输出预期结果:
[0,1,2,3,4,5] ["a","b","c","d","e","f"]
也可以直接用jq的文件读取参数实现,无需依赖paste:
jq --slurpfile a file1 --slurpfile b file2 '[$a[], $b[]] | transpose[] | add'
该命令说明
--slurpfile a file1:将file1的所有JSON行读取为数组$a--slurpfile b file2:将file2的所有JSON行读取为数组$b[$a[], $b[]] | transpose[] | add:将两个数组展开后转置,让对应位置的数组配对,最后逐个合并每对数组
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

