2017-01-22 72 views
0

我有一個包含存儲在一個變量對象列表的JSON輸出值(我可以不措辭是正確的)Linux的grep命令找到鑰匙從JSON

輸出捲曲命令:將發表評論,因爲我無法發佈在這裏

我想grep在這個位置「ad6743fae9c54748b8644564c691ba58」在輸出中顯示的值,每當我運行curl命令時都會改變。我想把它作爲其他curl命令的輸入。

請幫

+0

'{ 「目的地」:[ { 「ad6743fae9c54748b8644564c691ba58」:{ 「throttle_bytes_per_second」: 「0」, 「delete_this」:假, 「路徑」: 「s3testbucket」, 「server_side_encryption」:假, 「提供者」: 「S3」, 「access_key」: 「XXXXXXXXXXX」, 「access_secret」: 「XXXXXXXXXXXXXXXXXXXXX」 } } ], 「REQUEST_ID」: 「d6e089bb-9729-423b-8319-d441e0a72202」 }' – vr1111

回答

1

「JQ」 https://stedolan.github.io/jq/download/需要這一點。如果爲「ad6743fae9c54748b8644564c691ba58」,每次都改變一次,那麼下面的腳本怎麼樣?

of="data.json" && curl ..... -o $of > $of && key=$(cat $of | jq -r '.destination[0]|keys' | jq -r '.[]') && jq -r ".destination[0].$key" $of && unset key of 
  • 得到的數據通過捲曲是爲 「$」 的名稱輸出。

  • 「ad6743fae9c54748b8644564c691ba58」的位置被檢索爲「$ key」。

  • 使用「$ key」輸出「ad6743fae9c54748b8644564c691ba58」的值。

例如,在該腳本中,當「ad6743fae9c54748b8644564c691ba58」的位置不變化,「ad6743fae9c54748b8644564c691ba58」可以改變爲「abcdefg1234567」。

0

使用jq curl 'http://.../some.json' | jq .destination[0].ad6743fae9c54748b8644564c691ba58

0

這樣?:

#!/usr/bin/env python 
 
#coding:utf-8 
 
import sys 
 
import json 
 
aa = '''{ 
 
    "destination": [ 
 
     { 
 
      "ad6743fae9c54748b8644564c691ba58": { 
 
       "throttle_bytes_per_second": "0", 
 
       "delete_this": false, 
 
       "path": "s3testbucket", 
 
       "server_side_encryption": false, 
 
       "provider": "s3", 
 
       "access_key": "XXXXXXXXXXX", 
 
       "access_secret": "XXXXXXXXXXXXXXXXXXXXX" 
 
      } 
 
     } 
 
    ], 
 
    "request_id": "d6e089bb-9729-423b-8319-d441e0a72202" 
 
}''' 
 

 
# aa=sys.argv[1] 
 

 
bb = json.loads(aa) 
 
print bb["request_id"]