基本上,我想知道是否可以创建一个脚本来编辑.plist文件中的条目。然而,我不想替换特定的字符串,而是替换整个行,这样就可以添加一个新的字符串,因为属性会不断变化。举个例子:
<string>Something</string>
<key>SomethingElse</key>
<string>Numbers</string>
<key>Entry</key>
并将第三行更改为类似下面的内容,而不考虑该行当前所说的内容。
<string>randomstuffhere</string>
我已经找了几个小时了,我想使用sed可能是可行的,但在看了示例之后,我似乎无法自己破译它来构造它。任何和所有的帮助都是感激的。哦,如果可能的话,我想避免使用perl。
编辑:当使用以下命令时,在终端窗口中进行更改,但似乎不会将其保存到文件中。使用-i显然是修复这个问题的方法,但它会抛出一个错误,所以我不确定我做错了什么。
sed -n '/SomethingElse/{p;n;s/>.*</>randomstuffhere</;};p' my.plist
发布于 2012-09-22 08:36:45
所以这是您想要更改的第三行?
sed -i"" '3{;s\:.*:<string>randomstuffhere</string>:;}' .plist
我认为osx sed
支持-i
选项,但你必须告诉它不要使用备份扩展来覆盖它。一些sed要求s/的初始字符(如果不是'/‘)应该是空格,即\:
。您可能只需要:
。
在冒文件内容的风险之前,我会将其作为sed '3{....}' file > newFile
进行测试。要测试-i""
,请在副本上进行操作。
如果您希望始终更改其中包含数字的行,则使用
sed -i"" '\:<string>Numbers.*$:/<string>randomstuffhere</string>:` .plist
IHTH。
https://stackoverflow.com/questions/12539710
复制相似问题