我有一个JSON输出,其中包含存储在变量中的对象列表。(我可能没有正确的说法)
curl命令的输出:将发表评论,因为我无法在此发布
我想要在输出中显示的位置“ad6743fae9c54748b8644564c691ba58”中grep值,每次运行curl命令时都会更改。我希望将其作为输入传递给其他curl命令。
请帮忙
答案 0 :(得分: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
curl获取的数据输出为"" $的名称。
" ad6743fae9c54748b8644564c691ba58"被检索为" $ key"。
" ad6743fae9c54748b8644564c691ba58"使用" $ key"。
例如,在这个脚本中,当位置为" ad6743fae9c54748b8644564c691ba58"没有改变," ad6743fae9c54748b8644564c691ba58"可以更改为" abcdefg1234567"。
答案 1 :(得分:0)
使用jq
:
curl 'http://.../some.json' | jq .destination[0].ad6743fae9c54748b8644564c691ba58
答案 2 :(得分: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"]