使用 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
我想使用 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