小编Max*_*lev的帖子

如何从正则表达式匹配的数字中减去1?

我正在尝试编写一个脚本,将行中的每个数字减少“1”,但我得到的是所有“0”:

awk '{a=gensub(/([0-9]+)/,"\\1","g",$0);
     if(a~/[0-9]+/) {gsub(/[0-9]+/,a-1,$0);}
     print $0}'
Run Code Online (Sandbox Code Playgroud)

例如,字符串:

1,2,3,4-7
Run Code Online (Sandbox Code Playgroud)

应该导致:

0,1,2,3-6
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

0,0,0,0-0
Run Code Online (Sandbox Code Playgroud)

bash awk regular-expression

7
推荐指数
2
解决办法
4685
查看次数

标签 统计

awk ×1

bash ×1

regular-expression ×1