我有一个〜200的代码清单,看起来像这样:
EB0016
EB0017
EB0018
EB0019
EB0021
EB0023
EB0024
EB0026
EB0027
通过我工作的系统,清单200中的各种“父”代码以及相应“子”代码的子集也来自相同的200列表,如下面的代码块所示,它们也放置在业务报告中。
为了解释下面的值,对于每个放置了父代码EB0016的报告,我们还会看到15.8%的时间的子代码EB0148,以及13.7%的时间的子代码EB0192,依此类推。每当看到代码EB0017时,放置,我们还看到EB0187放置时间为13.6%,依此类推。在下面的示例中,EB0016和EB0017是父值,我们可以看到子值以及十进制格式的百分比。
在json文件中,每个父代代码仅列出一次,因此有200个父代。对于200个父母中的每个父母,列出了孩子代码,每个孩子都有一个对应的十进制频率,显示我们看到特定孩子代码与父代码并排放置的频率。
父代码和子代码都来自相同的200列表,因此,我现在有了可以在其中创建完整矩阵的数据。
我的问题是,如何将这个json文件转换为csv文件,然后可以将其导入电子表格中?通常,我会尝试刺探一些代码,然后发布其他帮助,但是我已经完全陷入僵局,在经过大量搜索之后我什至会这样做。也许awk?
{
"EB0016": {
"EB0148": 0.1581,
"EB0192": 0.1372,
"EB0135": 0.1177,
"EB0147": 0.0867,
"EB0110": 0.0822,
"EB0107": 0.0697
},
"EB0017": {
"EB0187": 0.1364,
"EB0148": 0.1312,
"EB0192": 0.093,
"EB0147": 0.0847
}
}
我想获取上面的json文件(我列出了2个父代码,但实际上大约有200个代码)并生成如下矩阵:
EB0107 EB0110 EB0135 EB0147 EB0148 EB0187 EB0192
EB0016 0.0697 0.0822 0.1177 0.0867 0.1581 - 0.1372
EB0017 - - - 0.0847 0.1312 0.1364 0.093
好的,我想我已经解决了您想要的东西,这点jq
(在Shell中使用JSON的事实上的标准工具)应该可以做到:
jq -r 'keys as $codes |
((["Code"] + $codes),
(to_entries | sort_by(.key)[] as $row |
reduce $codes[] as $c ([$row.key]; . + [$row.value[$c]? // "-"]))) |
@tsv' input_file.json
对于您的样本输入,它引以为傲
Code EB0016 EB0017
EB0016 - -
EB0017 - -
因为您的父代码不会互相显示为子代码,但是如果确实显示,则您会看到相应的数字,而不是破折号。
更改@tsv
为@csv
以获取您的问题的CSV输出(但不采样所需的输出)说。(请对此事保持一致,并提供相互匹配的示例输入和输出。这使回答问题变得非常容易)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句