正如标题所说,我想在文本中找到一个字符串,但是这个字符串很特殊。 文本可能是这样的:
{
PREBINDING = NO;
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "22B333C5-6D7A-4A76-81F2-12A045DAE44C";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = 2;
}
(另外,如果你是ios开发者,你可能知道文本示例来自XXX.xcodeproj/project.pbxproj)
我需要找到并删除这行文本:
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "22B333C5-6D7A-4A76-81F2-12A045DAE44C";
在这一行中,它有引号 (")、方括号 ([ ])、星号 (*),也有空格 ( )。当我尝试使用下面的代码找到这一行时:
provisionStr="22B333C5-6D7A-4A76-81F2-12A045DAE44C"
fileDir=project.pbxproj
totalLineStr=`grep $provisionStr $fileDir`
sed -i "" "s@$provisionStr@@" $fileDir
此 bash 代码不起作用。请帮助我,我才刚刚开始学习使用 bash。
最佳答案
sed 什么都不用替换:
s(for substitute)/string_to_match/new_string_or_empty_to_remove/g(for global/all document)
sed 's/\"PROVISIONING_PROFILE\[sdk=iphoneos\*\]"=\"22B333C5-6D7A-4A76-81F2-12A045DAE44C\";//g'
使用 \
转义双引号、星号和括号
关于xcode - 如何使用 bash 查找文本字符串 --> "PROVISIONING_PROFILE[sdk=iphoneos*]"<--这个字符串有很多特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775247/