BASH脚本 - 使用GREP

时间:2017-11-08 13:23:55

标签: json regex bash curl grep

我从谷歌API调用中收到了以下JSON输出,我只使用grep来存储“几何”\“位置”下的“lat”和“lng”值,所以我得到如下输出:

纬度,经度

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "",
               "short_name" : "",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Kildegade",
               "short_name" : "Kildegade",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Horsens",
               "short_name" : "Horsens",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Denmark",
               "short_name" : "DK",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "8700",
               "short_name" : "8700",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Kildegade, 8700 Horsens, Denmark",
         "geometry" : {
            "location" : {
               "lat" : 55.863466,
               "lng" : 9.848784
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 55.86481498029149,
                  "lng" : 9.850132980291503
               },
               "southwest" : {
                  "lat" : 55.8621170197085,
                  "lng" : 9.847435019708499
               }
            }
         },
         "place_id" : "ChIJG8X9xAVjTEYRGwL9QuNARJQ",
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

我认为我需要在API KEY之后进行GREP调用,但我有点卡住,因为我得到的输出没有任何GREP,但在应用任何简单的GREP时都没有。

adresse=$(curl -s "https://maps.googleapis.com/maps/api/geocode/json?address=Kildegade+8700+horsens+denmark"&key=GOOGLE API KEY")

在此之前,我使用了一些类似的JSON输出:

| grep -B 1 "route" | awk -F'"' '/short_name/ {print $4}

但是这不适合这个输出,而且我在使用GREP时效果不是很强大;)

任何帮助都会非常有用,谢谢;)

1 个答案:

答案 0 :(得分:1)

jq(https://stedolan.github.io/jq/)是一个轻量级且灵活的命令行JSON处理器。

假设您要从json示例中提取input.jsonjq字段。

然后您可以使用curl

之类的内容

请注意,在上面的示例中,我认为您的json存储在名为curl ... | jq ...的文件中,但您可以在exec( echo $PATH)之后使用echo $PATH,如下所示:{{ 1}}