txt 파일을 분리하기 위해 json에서 배열을 추출하는 방법

txt 파일을 분리하기 위해 json에서 배열을 추출하는 방법

.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

파이썬이 허용되는 것 같습니다. 이것이 내가 선호하는 솔루션입니다.

나는 데이터의 극단적인 경우를 모르기 때문에 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

그러면 각 숫자가 쉼표 없이 별도의 줄에 출력됩니다.

관련 정보