शेल स्क्रिप्ट में प्लिस्टेड नेस्टेड डिक्शनरी से मान पढ़ना


10

मेरे पास एक फाइल है और मुझे शेल स्क्रिप्ट का उपयोग करके नेस्टेड शब्दकोशों से मूल्यों को लाने में दिलचस्पी है। यहाँ मेरी फ़ाइल की संरचना है:

 <dict>
   <key>Countries</key>
    <dict>
        <key>USA</key>
        <dict>
           <key>Capital</key>
           <string>Washington DC</string>
           <key>Continent</key>
           <string>North America</string>
        </dict>
           <key>Italy</key>
        <dict>
           <key>Capital</key>
           <string>Rome</string>
           <key>Continent</key>
           <string>Europe</string>
        </dict>
    </dict>
 </dict>

यदि उपयोगकर्ता "कंट्री नाम" की आपूर्ति करता है, तो मुझे "कैपिटल" कुंजी को सौंपा गया मूल्य प्राप्त करने में दिलचस्पी है।
उदाहरण के लिए यदि मैं निम्नलिखित कमांड निष्पादित करता हूं, तो मुझे "देश" शब्दकोश के तहत पूरा डेटा मिलता है।

defaults read "/Users/sameerp/Downloads/data" Countries  2>&1   

मुझे निम्न आउटपुट मिले:

{
Italy =     {
    Capital = Rome;
    Continent = Europe;
};
USA =     {
    Capital = "Washington DC";
    Continent = "North America";
};
}

मैं इसे "देश" कुंजी (उदाहरण के लिए यूएसए) पास करने के लिए ऊपर दिए गए आदेश को कैसे संशोधित करूं और "कैपिटल" कुंजी के लिए मान प्राप्त करूं


तो, आपका सवाल क्या है? आपके पास अब तक क्या है? आप हमें स्क्रिप्ट लिखने के लिए नहीं कह रहे हैं?
टेराडॉन

@terdon: मैं किसी को भी मेरे लिए स्क्रिप्ट लिखने के लिए नहीं कह रहा हूं। मैं जानना चाहता था कि क्या "डिफॉल्ट रीड" कमांड का उपयोग करके नेस्टेड डिक्शनरी में एक महत्वपूर्ण मूल्य तक पहुंचने का एक सीधा तरीका है।
धूम्रपान करने वालों को

जवाबों:


13

डिफॉल्ट बहुत सारे मेस के बिना ऐसा नहीं कर सकते हैं, लेकिन प्लिस्टबडी करेंगे:

/usr/libexec/PlistBuddy -c "print :Countries:USA:Capital" /Users/sameerp/Downloads/data.plist
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.