我有一个 .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
这将在单独的行上输出每个数字,不带逗号