如何用sed精准替换Xcode项目中InAppPurchase对象内的enabled值?
精准修改Xcode项目中In-App Purchase的启用状态
你说得对,直接全局替换enabled = 0确实容易误改其他配置,毕竟Xcode的.pbxproj文件里可能有不少类似的键值对。要精准定位到com.apple.InAppPurchase这个能力块里的配置,我们可以利用sed的地址范围匹配功能,只在目标块内执行替换:
sed -i '' '/com.apple.InAppPurchase = {/,/};/ s/enabled = 0/enabled = 1/' myapp.pbxproj
我来拆解下这个命令的作用:
/com.apple.InAppPurchase = {/,/};/:这部分定义了一个处理范围——从包含com.apple.InAppPurchase = {的行开始,一直到包含};的行结束,刚好覆盖整个In-App Purchase的配置块。s/enabled = 0/enabled = 1/:只在上面定义的范围内,把enabled = 0替换成enabled = 1。
这样一来,文件里其他地方的enabled = 0就完全不会被影响啦。另外要注意下,这个命令依赖于你的项目文件里In-App Purchase的配置块确实是以};结尾的(这是Xcode项目文件的标准格式),如果你的文件结构有特殊调整,可能需要微调匹配的结束符,但大多数情况下这个命令都能正常工作。
内容的提问来源于stack exchange,提问作者inhwrbp
相关产品推荐
相关产品推荐

