正如上面的示例,每一行匹配后评估replacement部分是"<".++$num.">.$1",被perl执行的话,这里的++$num就会在perl环境下执行自增操作,$1也会被替换成已匹配的分组,最后完成s的替换。
下面的示例可能会更容易理解一些:
$ perl -pe 's/(\w+)/++$num/ge' file.log 1 2: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17如果想让它们顶格输出,可以继续删除行首空白:
$ perl -pe 's/(\w+)/++$num/ge;s/^\s+//' file.log 1 2: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17再比如,每行的单词单独计数,只需在每次读入行的开头进行计数器重置即可:
$ perl -pe '$num=0;s/(\w+)/"<".++$num.">.$1"/ge' file.log <1>.first <2>.paragraph: <1>.first <2>.line <3>.in <4>.1st <5>.paragraph <1>.second <2>.line <3>.in <4>.1st <5>.paragraph <1>.third <2>.line <3>.in <4>.1st <5>.paragraph