whi*_*fin 5 xml unix macos plist
基本上,我想知道是否可以创建脚本来编辑.plist文件中的条目。但是我不想替换特定的字符串,而是替换整个行,以便可以添加新的字符串,因为属性将不断变化。一个例子:
<string>Something</string>
<key>SomethingElse</key>
<string>Numbers</string>
<key>Entry</key>
Run Code Online (Sandbox Code Playgroud)
第三行更改为类似于以下内容的内容,而不管当前所说的是什么。
<string>randomstuffhere</string>
Run Code Online (Sandbox Code Playgroud)
我一直在找几个小时,我认为使用sed可能是可行的,但是在查看示例之后,我似乎无法将其自己构造出来。任何和所有帮助表示赞赏。哦,如果可能的话,我想避免使用perl。
编辑:使用以下命令时,在“终端”窗口中进行了更改,但似乎没有将其保存到文件中。使用-i显然是解决此问题的方法,但是它对我抛出了错误,因此我不确定自己在做什么错。
sed -n '/SomethingElse/{p;n;s/>.*</>randomstuffhere</;};p' my.plist
Run Code Online (Sandbox Code Playgroud)
可能最容易defaults编辑它:
defaults write /abs/path/to/plist SomethingElse "randomstuffhere"
Run Code Online (Sandbox Code Playgroud)
请注意,您必须提供plist文件的绝对路径,并保留文件名中的“ .plist”。
同样(如注释中指出的那样),这倾向于将plist文件转换为二进制plist格式的变体。使用适当的.plist阅读框架的程序可以很好地阅读,但将不再可读。如果您希望它采用XML格式,则可以使用进行转换plutil -convert xml1 /path/to/plist.plist。
或者,您可以使用PlistBuddy代替defaults:
/usr/libexec/PlistBuddy -c "Set :SomethingElse 'randomstuffhere'" /path/to/plist.plist
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3157 次 |
| 最近记录: |