2016-04-10 19 views
0

İşte burada sorun, hepsini basılması gerekirken terminali sadece ilk JSON öğesi half_damage_to:[name|fighting çıktısını olmasıdır kodumKabuk Senaryo 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##*|} 
} 

olduğunu. half_damage_to içinde bulunan JSON sözlüğündeki tüm öğeleri yazdırmak için tam olarak nasıl alabilirim?

cevap

0

Kullanım extended-regexp(grep -E)half_damage_to dizisinde maç ve ardından 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}' 

Çıktı üzerinde bölmek awk kullanmak:

[ 
    { 
     "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" 
    } 
]