Regex在bash中并不匹配,但适用于在线Regex工具

时间:2017-04-11 04:59:33

标签: ios xcode bash macos

我需要在xCode构建期间替换swift代码中的某些值。 我的快捷代码就像:

struct KeyConstants {
    static let uniqueKeyName = "some key"
}

我添加了一个构建阶段并编写了一些脚本来用旧值替换旧值:

NEW_VALUE=$"new value"
find . -type f -name 'MyFile.swift' -exec sed -i '' s/"uniqueKeyName = \"(.*?)\""/"uniqueKeyName = \"${NEW_VALUE}\""/ {} +

我认为问题是正则表达式,它适用于某些在线正则表达式工具但不适用于bash。

sed "s/uniqueKeyName = \"(.*?)\"/uniqueKeyName = \"new value\"/g" file.txt

请提前帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我从this post找到了解决方案。使用"[^"]*"代替"(.*?)"

find ${FILE_PATH} -type f -name '*.swift' -exec sed -i '' "s/uniqueKeyName = \"[^\"]*\"/uniqueKeyName = \"${NEW_VALUE}\"/" {} +