plutil -removeは、plist(property list)ファイルから指定したキーパスの値を削除する。

キーを削除する

-remove <keypath>の形式で指定する。

$ plutil -remove Count sample.plist
$ plutil -p sample.plist
{
  "Name" => "Sample"
  "Tags" => [
    0 => "a"
    1 => "b"
  ]
}

Countキーとその値が削除されている。

配列の要素をインデックスで削除する

キーパスの末尾に数値を指定すると、配列の該当インデックスの要素だけを削除できる。

$ plutil -remove Tags.0 sample.plist
$ plutil -p sample.plist
{
  "Name" => "Sample"
  "Tags" => [
    0 => "b"
  ]
}

先頭(0番目)の要素"a"だけが削除され、残りの要素は詰めて並び直される。

存在しないキーの削除はエラーになる

-insertとは逆に、-removeは存在しないキーパスを指定するとエラーになる。

$ plutil -remove NoSuchKey sample.plist
sample.plist: No value to remove at key path NoSuchKey
$ echo $?
1

スクリプトで複数のキーを一括削除する場合、存在しないキーの指定で処理全体が止まらないよう、事前に-typeで存在確認するか、終了コードをハンドリングする。

参考

【plutil】-insertでplistに値を挿入する