我有这样X1.7_RC02.20170811110948一个字符串,我需要增加RC和下一个点之间只有数字,例如:如何使用sed或awk或grep在两个字符之间增加字符串的数字部分?
原始字符串:
X1.7_RC02.20170811110948
分步达成的字符串:
X1.7_RC03.20170811110948
如何增加1(或更多此值)?
我有这样X1.7_RC02.20170811110948一个字符串,我需要增加RC和下一个点之间只有数字,例如:如何使用sed或awk或grep在两个字符之间增加字符串的数字部分?
原始字符串:
X1.7_RC02.20170811110948
分步达成的字符串:
X1.7_RC03.20170811110948
如何增加1(或更多此值)?
随着GNU
sed的
sed -r 's/(.*)(RC0?)([1-9]+)(\..*)/echo "\1\2$((\3+1))\4"/e' <<<X1.7_RC02.20170811110948
考虑到您的数据与示例相同,请尝试以下awk一次,并让我知道这是否有助于您。
awk '{val=$0;gsub(/.*RC|\..*/,"",val);val=sprintf("%02d",++val);sub(/RC[0-2]+/,"RC"val);print}' Input_file
或者,如果你有一个字符串,那么你可以打印出来的价值,并可能像上面运行命令:
echo "$var" | awk '{val=$0;gsub(/.*RC|\..*/,"",val);val=sprintf("%02d",++val);sub(/RC[0-2]+/,"RC"val);print}'
AWK解决方案:
初始字符串:
s="X1.7_RC02.20170811110948"
awk 'BEGIN{ FS=OFS="_RC"}{ n=substr($2,1,2); print $1,sprintf("%02.f",n+1) substr($2,3)}' <<< $s
输出:
X1.7_RC03.20170811110948
与GNU AWK的第三个参数匹配():
$ awk 'match($0,/(.*RC)([^.]+)(.*)/,a){$0=sprintf("%s%02d%s",a[1],a[2]+1,a[3])} 1' file
X1.7_RC03.20170811110948
谢谢,这解决了我的问题 –
的可能的复制[如何找到/替换和增加一个匹配的数字与sed/awk?](https://stackoverflow.com/questi ons/14348432/how-to-find-replace-and-increment-a-matched-number-with-sed-awk) –
@ RavinderSingh13,编辑不应该包含星号'*' – RomanPerekhrest