繁体   English   中英

用 Bash 脚本中的 sed 替换文件中的版本号

[英]Replace version number in file with sed in Bash script

在我的project.pro文件中,我有:

DEFINES += VERSION=\\\"1.13.1\\\"

我想用 Bash 脚本中的新版本号替换当前版本号:

VERSION_MAJOR=1
VERSION_MINOR=14
VERSION_PATCH=1

sed -i "s/\([0-9]+.[0-9]+.[0-9]+\)/\1${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}/" project.pro

为什么这不起作用?

到目前为止,我已经设法要么根本没有匹配项,要么进行了一些奇怪的仅替换最后一个数字的替换。

你可以使用这个sed

sed -i.bak -E "s/[0-9]+\.[0-9]+\.[0-9]+/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH/" project.pro

您尝试中的问题很少:

  • 如果没有扩展的正则表达式模式 ( -E ), +不能不转义地使用。
  • 点需要在正则表达式中转义
  • 无需使用捕获组和反向引用\\1

PS: .bak是备份文件的扩展名,以便您可以在替换错误的情况下获取原始文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM