簡體   English   中英

Shell腳本Json,Mac

[英]Shell Script Json, Mac

這是我的代碼

function poke() {

    json="curl -s -X GET http://pokeapi.co/api/v2/type/bug.json";
    prop="half_damage_to"
    temp=echo $json | sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed 's/[\,]/ /g' | sed 's/\"//g' | grep -w $prop
    echo ${temp##*|}
}

這里的問題是終端僅應打印出第一個JSON項目, half_damage_to:[name|fighting ,而應將其全部打印出來。 我如何確切地打印出half_damage_to內的JSON字典中的所有項目?

使用extended-regexp(grep -E)匹配half_damage_to數組,然后使用awk拆分half_damage_to

curl -s -X GET http://pokeapi.co/api/v2/type/bug.json |  grep -oE '"half_damage_to":\[{.*?\}]' | awk 'BEGIN {FS="half_damage_to\":"} {print $2}'

輸出:

[  
   {  
      "name":"fighting",
      "url":"http://pokeapi.co/api/v2/type/2.json"
   },
   {  
      "name":"flying",
      "url":"http://pokeapi.co/api/v2/type/3.json"
   },
   {  
      "name":"poison",
      "url":"http://pokeapi.co/api/v2/type/4.json"
   },
   {  
      "name":"ghost",
      "url":"http://pokeapi.co/api/v2/type/8.json"
   },
   {  
      "name":"steel",
      "url":"http://pokeapi.co/api/v2/type/9.json"
   },
   {  
      "name":"fire",
      "url":"http://pokeapi.co/api/v2/type/10.json"
   },
   {  
      "name":"fairy",
      "url":"http://pokeapi.co/api/v2/type/18.json"
   }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM