【问题标题】:Linux grep command to find the value of key from jsonLinux grep 命令从 json 中查找 key 的值
【发布时间】:2017-06-06 21:16:39
【问题描述】:

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

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

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

请帮忙

【问题讨论】:

  • ` { "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" }`

标签: json linux shell curl grep


【解决方案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 获取的数据以“$of”的名称输出。

  • “ad6743fae9c54748b8644564c691ba58”的位置被检索为“$key”。

  • 使用“$key”输出“ad6743fae9c54748b8644564c691ba58”的值。

例如在这个脚本中,当“ad6743fae9c54748b8644564c691ba58”的位置不变时,可以将“ad6743fae9c54748b8644564c691ba58”改为“abcdefg1234567”。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      像这样?:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 2011-08-07
        • 2012-09-13
        • 1970-01-01
        相关资源
        最近更新 更多