linux - 如何使用 sed 命令增加字符串子部分中的数字?并且输入将动态改变

标签 linux sed

我想使用 sed 将字符串 version="01.00.00.041" 的子部分增加 1。 例如: version="01.00.00.041"version="01.00.00.042" 并且它应该是动态的而不是静态的。我的意思是,每次构建时版本号都会更改,因此它应该是 sed 的输入,并且最后 1 位应该递增。

编辑:(从评论中收集)
我尝试过如下:

sed -i "s/version.*/version=\"${print $ "."$ "."$ "."$ +1}}\">/g" descriptor.xml

最佳答案

使用 perl:

$ echo 'version="01.00.00.041"' | perl -pe 's/(\d+)(?=")/sprintf("%0*d", length($1), $1+1)/e'
version="01.00.00.042"

增加引号前的最后一组数字,并根据字段长度使用 0 填充,而不是硬编码数字。

关于linux - 如何使用 sed 命令增加字符串子部分中的数字?并且输入将动态改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477542/

相关文章:

linux - 我如何比较两个在 unix 中有多个字段的文本文件

linux - Netlink 用户空间和内核空间通信

linux - 我的代码有什么问题,为什么不将大写字母 G 的 "EVERY INSTANCE"替换为 Gb,

regex - 正则表达式不能按预期使用 sed 命令

linux - 删除匹配行和所需行

linux - Fortran 90 不写入标准输出?

linux - 获取动态 IP 然后 Grep 和 Echo 主机文件

linux - 我询问了 get tid on Linux System 和 getpid 的结果

python - 如果值不存在,则从 python 向 key=value 添加值

php - 在 BOF 或 EOF 查找所有带有 Blank 或 WS 的文件