2015-12-31 7 views
13

मैं एक फ़ाइल में निम्न है (जो मैं "myFile" कहते हैं) के साथ नहीं सूचकांक सरणी सकता है:JQ: स्ट्रिंग

[{ 
    "id": 123, 
    "name": "John", 
    "aux": [{ 
     "abc": "random", 
     "def": "I want this" 
    }], 
    "blah": 23.11 
}] 

मैं इसे [ बिना पार्स और ] कर सकते हैं इस प्रकार है:

$ cat myfile | jq -r '.aux[] | .def' 
I want this 
$ 

लेकिन [ और ] साथ मैं:

$ cat myfile | jq -r '.aux[] | .def' 
jq: error: Cannot index array with string 

मैं jq का उपयोग कर [ और ] से कैसे निपट सकता हूं? । (मुझे यकीन है कि मैं एक अलग उपकरण के साथ उन्हें बंद पार्स सकता हूँ लेकिन मैं JQ का सही उपयोग सीखना चाहते

उत्तर

26

यह होना चाहिए: बाहरी सरणी पर

jq '.[].aux[].def' file.json 

.[] दोहराता, .aux[] तो अधिक iterates प्रत्येक नोड के aux सरणी और .def प्रिंट उनके .def संपत्ति

हो जाएगा ताकि उत्पादन:।

"I want this" 

आप दोहरे उद्धरण चिह्नों से छुटकारा पाने चाहते हैं पारित -r (--raw) jq रहे हैं:

jq -r '.[].aux[].def' file.json 

आउटपुट:

I want this 
+0

ओह, मैं आप पहले से ही '-r' प्रश्न में प्रयोग कर रहे हैं । किसी भी तरह, यह चोट नहीं पहुंचाता है! :) – hek2mgl

संबंधित मुद्दे