Linux grep命令从json中查找key的值

时间:2017-01-22 06:47:08

标签: json linux shell curl grep

我有一个JSON输出,其中包含存储在变量中的对象列表。(我可能没有正确的说法)

curl命令的输出:将发表评论,因为我无法在此发布

我想要在输出中显示的位置“ad6743fae9c54748b8644564c691ba58”中grep值,每次运行curl命令时都会更改。我希望将其作为输入传递给其他curl命令。

请帮忙

3 个答案:

答案 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"]