如何在使用sed找到的每个模式的末尾添加计数值

时间:2015-12-11 12:23:52

标签: regex perl

我有一个带模式的文件:

START_BIT_VAL  somedata
somedata
START_BIT_VAL  somedata
somedata
START_BIT_VAL somedata
SOMEDATA

我想用以下代码替换此模式:

START_BIT_VAL_0  somedata
somedata
START_BIT_VAL_1 somedata
somedata
START_BIT_VAL_2  somedata
SOMEDATA

应在匹配的模式之后附加实例的出现。

这是我迄今为止所做的尝试:

perl -lne 'END {print $cnt } map ++$cnt, s/START_BIT_VAL/START_BIT_VAL_$cnt/g' <file_name>

问题是我只是将输出作为数字,但没有发生替换。

1 个答案:

答案 0 :(得分:1)

使用awk:

awk 'BEGIN {c=0} {if ($1=="START_BIT_VAL") {$1=$1c; c++}; print}' file

输出:

START_BIT_VAL0 somedata
somedata
START_BIT_VAL1 somedata
somedata
START_BIT_VAL2 somedata
SOMEDATA