sed plist ファイルが無効なバイトシーケンスを提供します。

sed plist ファイルが無効なバイトシーケンスを提供します。

Unix Mac 10.9.5、French CAのバージョンでは、多くのヒントを読んでいますが、エラーが消えるとplistが破損しています。

locale コマンドは以下を提供します。

LANG="fr_CA"
LC_COLLATE="fr_CA"
LC_CTYPE="fr_CA.UTF-8"
LC_MESSAGES="fr_CA"
LC_MONETARY="fr_CA"
LC_NUMERIC="fr_CA"
LC_TIME="fr_CA"
LC_ALL=

ファイルはtest.mac.plistという名前のplistで、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>bookmarklist.expansionStates</key>
    <dict>
        <key>GENEREAL</key>
        <true/>
    </dict>

</dict>
</plist>

スクリプト可能またはインラインコマンドは、sed -i '.bak'«s / xxxxx / test / g»test.mac.plistです。

  1. 無効なバイトオーダーエラーが発生します。
  2. 提案されているようにLC_TYPEをLC_TYPE = Cに変更すると、ファイルは次のようになります。

bplist00fl

            ¬ !"+ -./ 2 34' 89: _ >

どんなアイデアがありますか?

ベストアンサー1

あなたのplistファイルがバイナリplistファイルに変換されました。最良の方法は、デフォルトまたはPlistBuddyを使用してplistファイルを変更することです。どちらもXMLまたはバイナリplistファイルに書き込みます。あなたの例では、GENERALキーをfalseに変更したいようです。 PlistBuddyでは、最初にエントリ全体を削除してから、そのアイテムをファイルに再度追加する必要があります。アイテム全体を削除します。

/usr/libexec/PlistBuddy -c "Delete :bookmarklist.expansionStates" /path/to/file

次に、新しいブール値を使用して項目を再追加します。

/usr/libexec/PlistBuddy -c "Add :bookmarklist.expansionStates:GENERAL bool false" /path/to/file

デフォルト値を使用するには、plistファイルが正しいドメインにある必要があり、PlistBuddyを使用するよりも柔軟性が低くなります。これらのコマンドの前にLC_TYPE = CまたはLC_ALL = Cを付ける必要があるかもしれません。

おすすめ記事