我想使用sed / awk在序列中增加数字(脚本中有多个数字)。
所以我想说我有以下代码:
samplefilename_15.format
samplefilename_20.format
samplefilename_25.format
看看所有这些增加了五个?有没有办法通过5到sed / awk或其他方法增加所有数字(15,20和25)?因此,当我运行命令/脚本时,数字变为(20,25,30)。
感谢您的帮助。
答案 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