jq सशर्त उत्पादन


84

मैं json के साथ खेलने के लिए jq का उपयोग कर रहा हूँ । मैं सोच रहा था कि इसमें सशर्त कुछ कैसे प्रिंट किया जाए।

कहते हैं कि मुझे फील्ड कॉल में दिलचस्पी है geo। मैं निम्न आदेश का इस्तेमाल किया और केवल एक प्रविष्टि जिसका है यह पता लगाना geoहै null:

% cat all.json | jq '.geo != null' | sort | uniq -c              
   1 false
6891 true

मैं उस प्रविष्टि को कैसे प्रिंट कर सकता हूं बिना बाकी सब छपाये?

printमैनुअल में कमांड जैसी कोई चीज नहीं देखी । और यह काम नहीं करता है cat all.json | jq 'if .place == null then . end':। jqसिंटैक्स त्रुटि के बारे में शिकायत की गई।

जवाबों:


144

आप केवल आवश्यक प्रविष्टियों को प्राप्त करने के लिए चयन फ़ंक्शन का उपयोग कर सकते हैं :

jq 'select(.geo != null)' all.json

22
चयन कार्य करता है, लेकिन इस सवाल का पूरी तरह से जवाब देने के लिए आपको केवल भू को फिर से फ़िल्टर करने की आवश्यकता होगी, jq के अंदर पाइपिंग:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
एंडी रीगन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.