2016-11-13 1 views
1

파일에 Json 레코드 세트가 있습니다. 나는 반복적으로 게시하고 싶다. 예를 들어 파일 "jsondata.dat"를 내가 별도의 컬 포스트에 각 JSON 기록 즉반복적으로 cURL을 통해 게시 bash의 Json 레코드 세트

{ 
    "name": "name_X", 
    "mark": "mark_X" 
} 

를 게시하고자하는 JSON 기록

{ 
     "json_records":[ 
      { 
       "name": "name_1", 
       "mark": "mark_1" 
      }, 
       { 
       "name": "name_2", 
       "mark": "mark_2" 
      } 
     ] 
} 

다음이 포함되어 있습니다. 어떻게 bash에서 이것을 달성 할 수 있을까요?

답변

3

내가 jq을 사용 각 레코드를 단일 행으로 파이프 한 다음 while 루프를 사용하여 해당 출력을 읽어 curl으로 전달하십시오.

jq -c '.json_records[]' | while IFS= read -r rec; do 
    curl -X POST -d"$rec" "$URL" 
done 
0

나는 차라리이 같은 파이썬 스크립트를 사용하여 각 레코드를 추출 파일 전처리 :

#!/usr/bin/env python 

import json 

i = 0 
for record in json.load(open('raw.json', 'r'))['json_records']: 
    open('record_{}.json'.format(i), 'w').write(json.dumps(record)) 
    i += 1 

그리고 컬 별도로 각 record_X.json를 처리 :

curl host -d recrod_X.json 
0

이 시도 -

[email protected]:~$ egrep 'name|mark' kk -A 1 -B 1 ###A for Above and B for Below 
      { 
       "name": "name_1", 
       "mark": "mark_1" 
      }, 
       { 
       "name": "name_2", 
       "mark": "mark_2" 
      },