我有这个字符串“foo1.0_1.0”,我想根据第二个“.”之后的数字将其递增 1,它可以超过一位数。
这是我的尝试:
str="foo1.0_1.0"
version="${str##*.}" # gives 0
new_version="$((version + 1))" # gives 1
echo "${str/${str##*.}/$new_version}" # gives foo1.1_1.0 (desired: foo1.0_1.1)
因为它会将 ${str##*.}
的结果作为模式。
如何实现?更一般地说,如何在某个字符(在本例中为点)第二次出现后替换子字符串?
最佳答案
使用 awk
,您可以使用点作为分隔符并增加第三个字段:
awk 'BEGIN{FS=OFS="."} {$3++} 1' <<< "$str"
foo1.0_1.1
关于linux - 在字符 bash 第二次出现后替换子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54588493/