使用 Sed/Awk 或其他 Tool/Utility 增加值

Incrementing Values Using Sed/Awk or Other Tool/Utility

我想使用 sed/awk 让数字按顺序递增(脚本中有多个数字)。

假设我有以下代码:

samplefilename_15.format 
samplefilename_20.format
samplefilename_25.format

看看这些都是怎么增加五的?有没有办法通过 sed/awk 或其他方法增加所有数字(15、20 和 25)?因此,当我 运行 a command/script 时,数字变为 (20,25,30).

感谢您的帮助。

如果有空可以使用perl:

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

输出:

samplefilename_20.format
samplefilename_25.format
samplefilename_30.format

要编辑文件:

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

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

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

使用awk:

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

输出:

samplefilename_25.format
samplefilename_30.format
samplefilename_35.format