使用Sed / Awk或其他工具/实用程序增加值

时间:2015-06-28 21:58:06

标签: bash math awk sed increment

我想使用sed / awk在序列中增加数字(脚本中有多个数字)。

所以我想说我有以下代码:

samplefilename_15.format 
samplefilename_20.format
samplefilename_25.format

看看所有这些增加了五个?有没有办法通过5到sed / awk或其他方法增加所有数字(15,20和25)?因此,当我运行命令/脚本时,数字变为(20,25,30)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果您可以免费使用perl

perl -ne 's/(?<=_)(\d+)(?=\.)/($1+5)/e && print' filename

输出:

samplefilename_20.format
samplefilename_25.format
samplefilename_30.format

编辑文件:

perl -ne 's/(?<=_)(\d+)(?=\.)/($1+5)/e && print' -i filename

如果要在同一行上有多个要修改的条目,请使用全局修饰符。

perl -ne 's/(?<=_)(\d+)(?=\.)/($1+5)/ge && print' -i filename

答案 1 :(得分:2)

使用awk

awk '{
    if(match($0, /_[0-9]+\./)) {
        a = substr($0, 0, RSTART)
        b = 5 + substr($0, RSTART + 1, RLENGTH - 2)
        c = substr($0, RSTART + RLENGTH - 1)
        $0 = a b c }
    print
}'

输出:

samplefilename_25.format
samplefilename_30.format
samplefilename_35.format