2016-11-13 52 views
1

我在文件中設置了Json記錄集。我想迭代發佈。 例如文件 「jsondata.dat」 包含以下JSON記錄在bash中通過cURL設置JSON記錄迭代發佈

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

我想後每個JSON記錄即

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

在單獨的捲曲後。如何在bash中實現這一點?

回答

3

我會用jq將每條記錄作爲單行傳輸,然後使用while循環讀取該輸出以傳遞至curl

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

我寧願預處理的文件中提取每條記錄的Python腳本是這樣的:

#!/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" 
      },