一些背景知识。 我有一个Xcode项目,目前我有三个构建配置(AdHoc,Debug和Release),但可能还会添加一个。用于项目归档构建的构建配置在方案的“归档”部分中定义。
我使用xcodebuild作为Jenkins作业的一部分,并使用-configuration选项指定要使用的构建配置。
我发现“clean”命令(xcodebuild clean blah.blah.blah)尊重-configuration选项但是archive命令没有,它将使用该方案的Archive部分中指定的任何内容。
因此,如果我想从其设置的任何内容更改构建,例如从AdHoc更改为Release,我需要修改该方案。
我已经提出了一个sed命令,它将查看scheme文件并用buildConfiguration =“Release”替换所有出现的buildConfiguration =“Adhoc”,即:
my_build_configuration="Release"
sed -i '' -e 's/buildConfiguration = "[^"]*"/buildConfiguration = "'$my_build_configuration'"/' path/to/file
问题是这不仅适用于ArchiveAction项目,而且适用于所有项目(构建,运行,测试等等),如果可能的话,我希望专门针对存档操作,但我不确定如何使用sed。
以下是我要搜索的内容:
<ArchiveAction
buildConfiguration = "Adhoc"
然后我想要替换双引号中的值,例如;将AdHoc更改为Release,因此它看起来像
<ArchiveAction
buildConfiguration = "Release"
我不太清楚从哪里开始
答案 0 :(得分:0)
你应该在缓冲区中加载一行(假设它总是在2行)
sed "/<ArchiveAction/ {
N
s/\(buildConfiguration = \"\)[^\"]*\"/\1${my_build_configuration}\"/
}
" path/to/file
如果不首先尝试在同一行,如果失败加载下一行并重试
sed "/<ArchiveAction/ {
s/\(buildConfiguration = \"\)[^\"]*\"/\1${my_build_configuration}\"/
t
N
s/\(buildConfiguration = \"\)[^\"]*\"/\1${my_build_configuration}\"/
}
" path/to/file
答案 1 :(得分:0)
感谢SeanN,我在OS X上有一个可行的解决方案:
`sed -i '' -e '/<ArchiveAction/,/<\/ArchiveAction/ s/buildConfiguration = "[^"]*"/buildConfiguration = "'$my_build_configuration'"/' /Path/To/File`
感谢大家对此的帮助,非常感谢。