我有一个 bash 文件,我想在其中存储版本文本(最好是“ echo version 1.0.1
”,以便它在执行时自动打印出自己的版本)
我正在尝试创建一个将更新版本的命令组。
到目前为止我已经
grep "echo version" ~/.bashrc | cut -c 14- | sed -e 's/\./\n/g'
提取“echo version 1.0.1”,剪切出“echo version ”并将版本拆分在点之间
1
0
1
并且我达到了正则表达式、bash 和 google-foo 的限制来提取最后一个数字(补丁版本),我可以增加该数字并写回文件。
主要是,我如何得到最后一个数字?
此外,如果我可以做得更好,请提出建议。
答案1
awk -F'[ .]' '/^echo version/ {print $1,$2,$3"."$4"."$5+1}' ~/.bashrc
输出:
echo version 1.0.2
-F'[ .]'
:字段分隔符空白和点
/^echo version/
:搜索以 ( ^
)开头的行echo version
print $1,$2
:打印以空格分隔的字符串
$5+1
:将字符串/值增加 1
答案2
perl 来救援
$ cat file
echo version 1.0.1
$ perl -i -pe 's/echo version \d+\.\d+\.\K(\d+)/ $1+1 /e' file
$ cat file
echo version 1.0.2
答案3
使用bash-semver
:
## Use bash-semver
## https://github.com/fmahnke/shell-semver
#===========
#Increment semantic versioning strings in shell scripts.
./increment_version.sh
usage: increment_version.sh [-Mmp] major.minor.patch
./increment_version.sh -p 0.0.0
#0.0.1
./increment_version.sh -m 0.0.3
#0.1.0
./increment_version.sh -M 1.1.15
#2.0.0
./increment_version.sh -Mmp 2.3.4
#3.1.1