2012-12-17 30 views
5

Tôi cần phải phân tích cú pháp jsonarray bằng cách sử dụng regex. My json isPhân tích cú pháp JSON trong tập lệnh shell với regex

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

Tôi cần có hai giá trị máy chủ.

+0

Nếu đó là json thích hợp (ví dụ: được bọc trong '{}'); bạn có thể sử dụng ['jq -r '.keys [] | .host''] (http://stedolan.github.io/jq/) – jfs

Trả lời

10

Khi bạn muốn trích xuất văn bản, grep là bạn của bạn:

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

Ví dụ:

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

example.com 
example.net 
+2

Bạn có thể thêm giải thích thêm cho anwser này không? –

+5

không hoạt động trên máy Mac – Andy

+0

@Andy cần gnu grep. – Kent

1

Các regex sau sẽ lấy giá trị máy chủ của bạn sử dụng một Kleene ký tự đại diện không tham lam:

/"host":\s"(.*?)"/ 
Các vấn đề liên quan