![如何将 json 中的数组提取到单独的 txt 文件](https://linux22.com/image/142683/%E5%A6%82%E4%BD%95%E5%B0%86%20json%20%E4%B8%AD%E7%9A%84%E6%95%B0%E7%BB%84%E6%8F%90%E5%8F%96%E5%88%B0%E5%8D%95%E7%8B%AC%E7%9A%84%20txt%20%E6%96%87%E4%BB%B6.png)
我有一个 .json 文件,需要将 SliceTiming 字段提取到单独的 txt 文件中。我无法使用jq。如果可以的话,我的命令是
jq .SliceTiming[] *.json
这是 .json 文件
{
"EchoTime": 0.033,
"RepetitionTime": 0.75,
"EffectiveEchoSpacing": 0.0005,
"SliceTiming": [
0.51,
0,
0.365,
0.0725,
0.4375,
0.2175,
0.5825,
0.2925,
0.6575,
0.145,
0.51,
0,
0.365,
0.0725,
0.4375,
0.2175,
0.5825,
0.2925,
0.6575,
0.145,
0.51,
0,
0.365,
0.0725,
0.4375,
0.2175,
0.5825,
0.2925,
0.6575,
0.145,
0.51,
0,
0.365,
0.0725,
0.4375,
0.2175,
0.5825,
0.2925,
0.6575,
0.145,
0.51,
0,
0.365,
0.0725,
0.4375,
0.2175,
0.5825,
0.2925,
0.6575,
0.145,
0.51,
0,
0.365,
0.0725,
0.4375,
0.2175,
0.5825,
0.2925,
0.6575,
0.145 ],
"PhaseEncodingDirection": "j-"}
答案1
看来 python 是允许的。这将是我的首选解决方案。
我对处理 sed、grep、awk 感到不舒服,因为我不知道数据的边缘情况。
使用 , 将数组打印到标准输出
cat data.json | python -c "import sys, json; print json.load(sys.stdin)['SliceTiming']"
笔记:此示例使用 python2.7,不太可能与 python3.x 一起使用
只是输出值。不,[]
不,
:
创建是slice_out.py
因为我找不到执行内联终端的好方法
import sys, json
slice_data = json.load(sys.stdin)['SliceTiming']
for s in slice_data: print s
跑与cat data.json | python slice_out.py
答案2
使用 Perl 和 JSON 模块:
perl -MJSON -e 'print join("\n", @{decode_json(join("\n",<>))->{"SliceTiming"}})' <file.json
这将在单独的行上输出每个数字,不带逗号