用增量替换正则表达式

时间:2018-06-19 14:03:53

标签: bash perl

使用该文本中的简单Linux脚本(bash,perl,awk):

## Step
### Action :  
 * press 

## Step 10

## Step 1

我想用^##[ ]+Step[ ]*[0-9]*$代替## Step $i的所有出现 我的替换次数已经完成+ 1

## Step 1
### Action :  
 * press 

## Step 2

## Step 3

实际上,我只需要它即可自动将编号标题添加到我的降价文档中!

2 个答案:

答案 0 :(得分:3)

对于Perl解决方案,您拥有问题中正则表达式的大部分外观。

s/^##[ ]+Step[ ]*[0-9]*$/"## Step ".(++$i)/e;

/ e修饰符将替换项转换为一个表达式,该表达式将被求值,因此,每次匹配时,它将递增$i

要使用此功能,您可以通过此命令传递文本

perl -pe 's/^##[ ]+Step[ ]*[0-9]*$/"## Step ".(++$count)/e;' 

-p标志在执行的代码周围添加一个while循环

答案 1 :(得分:1)

Perl单线:

perl -pe'BEGIN{$i=1} s/^##[ ]+Step[ ]*[0-9]*$/## Step $i/ and $i++;'