如何使用 sed 或 awk 或 grep 在两个字符之间增加字符串的数字部分?



我有一个像X1.7_RC02.20170811110948这样的字符串,我只需要增加RC和下一点之间的数字,例如:

原始字符串:

X1.7_RC02.20170811110948

递增字符串:

X1.7_RC03.20170811110948

如何增加 1(或更多此值(?

与 GNU awk 用于匹配 3rd arg 的 ((:

$ awk 'match($0,/(.*RC)([^.]+)(.*)/,a){$0=sprintf("%s%02d%s",a[1],a[2]+1,a[3])} 1' file
X1.7_RC03.20170811110948

withGNUsed

sed -r 's/(.*)(RC0?)([1-9]+)(..*)/echo "12$((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

最新更新