regex

2012-12-17 16 views
5

के साथ खोल स्क्रिप्ट में JSON को पार्स करना मुझे regex का उपयोग करके jsonarray को पार्स करने की आवश्यकता है। मेरा जेसनregex

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

मुझे दो होस्ट मूल्यों को प्राप्त करने की आवश्यकता है।

+0

यदि यह उचित जेसन (उदाहरण के लिए, '{} 'में लपेटा गया था); आप ['jq -r '.keys [] | का उपयोग कर सकते हैं .host''] (http://stedolan.github.io/jq/) – jfs

उत्तर

10

आप पाठ को निकालने के लिए चाहते हैं, तो grep अपने दोस्त है

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

example.com 
example.net 
+2

क्या आप इस anwser को और स्पष्टीकरण जोड़ सकते हैं? –

+5

मैक – Andy

+0

पर काम नहीं करता है @ एंडी इसे gnu grep की आवश्यकता है। – Kent

1

निम्नलिखित regex एक गैर लालची क्लीन वाइल्डकार्ड का उपयोग कर अपने मेजबान मूल्यों हड़पने जाएगा:

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

उदाहरण के लिए::

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