2016-11-13 55 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" 
      },