Suchen und Ersetzen von Arry in plist

Suchen und Ersetzen von Arry in plist

Ich versuche, ein Array in einer plist zu finden und zu ersetzen. Ich kann mit Standardeinstellungen problemlos ein Array schreiben, aber ich kann kein Array löschen.

Die plist ist:~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plisty

Ich möchte löschen:

<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.apple.mail</string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>

und ersetzen Sie es durch:

<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.microsoft.outlook</string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>

Ich habe im Internet gesucht, aber keine Lösung gefunden ;-) Kann mir jemand helfen? Ich danke euch im Voraus für eure Hilfe, Netzmeister

Antwort1

Seit derplistscheint eine normale Textdatei zu sein, unter Linux reicht es, sie zu schreiben (es ist eine einzelne Zeile)

sed 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt

wobei Sie stattdessen AAA.txtIhr schreiben sollten filename.
Das Ergebnis wird in der Standardausgabe angezeigt ( ttyin der Sie arbeiten).

Nachdem Sie überprüft haben, ob es richtig funktioniert hat, können Sie die gleiche Zeile schreiben und den Parameter hinzufügen, -ium die Datei darin zu ändern

sed -i 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt


Einige Erklärungen mehr:

 sed -i 's/OLD/NEW/g' NameOfYourFile
  • Der obige Befehl sucht innerhalb der Datei NameOfYourFilenach allen Vorkommen der Zeichenfolge OLDund ersetzt sie durch die Zeichenfolge NEW.

  • Sie sollten genau identifizieren dieStichwortdie Sie ersetzen möchten, in diesem Fall mit den folgenden Tags: <string>com.apple.mail</string>.
    Da ein vorhanden ist, /müssen Sie es mit einem \davor schützen und das Schlüsselwort wird zu <string>com.apple.mail<\/string>. (Sie müssen die gleiche Logik auf die zweite Zeichenfolge anwenden).

  • Der Parameter -iersetzt den String in der Datei, ohne das Ergebnis auf dem Bildschirm anzuzeigen. Dafür kann es besser sein, es vorher ohne zu versuchen.
  • Darunter BSDkann wichtig sein, dieReihenfolge der Parameter, es sed ... -ikönnte also nicht dasselbe sein sed -i ...und Ihnen den gefundenen Fehler anzeigen.
  • sudoMöglicherweise müssen Sie am Anfang hinzufügen, um dieRoot-Berechtigungoder diesen Befehl von einemWurzelschale, wenn Sie als normaler Benutzer nicht berechtigt sind, diese Datei zu ändern. (Sie können dies mit überprüfen ls -l NameOfYourFile).

Anmerkungen

ausman sed

-ich[SUFFIX],--an Ort und Stelle[=SUFFIX]

          edit files in place (makes backup if SUFFIX supplied)

verwandte Informationen