2012-12-17 7 views
5

Ich brauche die jsonarray zu analysieren durch regex. Mein JSON istParsing JSON in Shell-Skript mit regex

"keys": [ 
     { 
     "host": "example.com"  
     }, 
     { 
     "host": "example.net" 
     } 
    ] 

Ich brauche die beiden Hosts Werte.

+0

Wenn es richtige json (zB eingewickelt in '{}'); Sie könnten ['jq -r '.keys [] | verwenden .host''] (http://stedolan.github.io/jq/) – jfs

Antwort

10

Wenn Sie Text extrahieren mögen, grep ist dein Freund:

grep -Po '(?<="host": ")[^"]*' myjsonFile 

Zum Beispiel:

kent$ echo '"keys": [ 
     { 
     "host": "example.com"  
     }, 
     { 
     "host": "example.net" 
     } 
    ]'|grep -Po '(?<="host": ")[^"]*' 

example.com 
example.net 
+2

Könnten Sie diesem Verstärker weitere Erklärungen hinzufügen? –

+5

funktioniert nicht auf Mac – Andy

+0

@Andy braucht Gnu Grep. – Kent

1

Die folgende Regex Ihrer Host-Werte unter Verwendung einer nicht-gierige kleene Wildcard greifen:

/"host":\s"(.*?)"/