シェルスクリプトでplistネストされた辞書から値を読み取る


10

plistファイルがあり、ネストされた辞書からシェルスクリプトを使用して値をフェッチすることに興味があります。これが私のplistファイルの構造です:

 <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>

ユーザーが国名を指定した場合、「Capital」キーに割り当てられた値を取得することに興味があります。
たとえば、次のコマンドを実行すると、「国」辞書の下に完全なデータが表示されます。

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

次の出力が表示されます。

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

上記のコマンドを変更して「国」キー(たとえば米国)を渡し、「資本」キーの値をフェッチするには


それで、あなたの質問は何ですか?これまでに何を持っていますか?あなたは私たちにあなたのためにスクリプトを書くように求めていませんか?
terdon 2012年

@terdon:私がスクリプトを書くように誰にも頼んでいない。「defaults read」コマンドを使用してネストされた辞書のキーの値に直接アクセスする方法があるかどうかを知りたいと思いました。
Smokinguns

回答:


13

多くの混乱がなければ、デフォルトではこれを行うことはできませんが、PlistBuddyは次のことを行います。

/usr/libexec/PlistBuddy -c "print :Countries:USA:Capital" /Users/sameerp/Downloads/data.plist
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.