Perl一行式:处理行号和单词数 (3)

正如上面的示例,每一行匹配后评估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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysjfp.html