【问题标题】:regexp replacement with increment正则表达式替换增量
【发布时间】:2018-06-19 23:25:55
【问题描述】:

从该文本中使用简单的 linux 脚本(bash、perl、awk):

## Step
### Action :  
 * press 

## Step 10

## Step 1

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

## Step 1
### Action :  
 * press 

## Step 2

## Step 3

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

【问题讨论】:

  • 你是用另一个脚本写这个文件吗?您可以使用 ((variable++)) 递增变量
  • 可以,但是这个文件是手写的!

标签: bash perl


【解决方案1】:

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

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

/e 修饰符将替换转换为评估的表达式,因此每次匹配时,它都会增加 $i

要使用这个,你可以通过这个命令来管道你的文本

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

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

【讨论】:

    【解决方案2】:

    perl 单行代码:

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

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2019-01-24
      • 2015-01-24
      相关资源
      最近更新 更多