0

*.plist ファイルから指定されたものを削除するスクリプトを書きたいのdictですが、インターネットで見つけたものは何も機能しません..それを行う方法はありますか? コマンドを試しsedましたが、これは機能しません

4

2 に答える 2

1
  1. plistファイルをに読み込みますNSDictionary[ドキュメント]
  2. mutableCopyこれを利用して、使用できる辞書を入手してください。
  3. 削除したいアイテムを削除します
  4. 辞書をディスクに書き戻します。[ドキュメント]
于 2012-07-07T11:56:14.573 に答える
-1

Sed は、これには非常に悪いツールです。iOSに存在する場合は、代わりにPlistBuddyを試してください(MacOSには存在します...)。/usr/libexec/PlistBuddy という名前で、plist ファイルを操作できます。

構文は少し奇妙ですが、「エントリ」は次のように指定されているようです。plist ファイルの先頭から開始します。配列の場合は、アドレス指定する要素のインデックスを指定します。辞書の場合は、移動するキー名を指定します。そのような指定はコロンで区切ります。スペースがある場合は、全体を "" で囲みます。

私のサンプルファイルはこれです:

stieber@:~> cat foo.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">

<plist version="1.0">
  <array>
    <dict>
      <key>Sample 1</key>
      <array>
        <string>Sample String 1</string>
        <dict>
          <key>Sample 2</key>
          <string>Sample String 2</string>
        </dict>
      </array>
    </dict>
  </array>

サンプル セッション:

stieber@:~> /usr/libexec/PlistBuddy foo.plist
Command: print
Array {
    Dict {
        Sample 1 = Array {
            Sample String 1
            Dict {
                Sample 2 = Sample String 2
            }
        }
    }
}

Command: print "0:Sample 1:1"
Dict {
    Sample 2 = Sample String 2
}

Command: delete "0:Sample 1:1"
Command: print
Array {
    Dict {
        Sample 1 = Array {
            Sample String 1
        }
    }
}

コマンドラインでも、ヒアドキュメントでもコマンドを提供できます。Interactive の方が簡単に操作できます :-)

于 2012-07-07T12:20:05.597 に答える