Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个文件,在搜索中包含十几个到数百个匹配项
/playOrder="(\d+)"/
这些在 ePub 电子书的索引文件中,以防有人想知道。
是否有可能让一个 perl 正则表达式替换找到所有这些的东西,并“神奇地”将它们全部重新编号为一个序列,从 1 开始?
根据 OP 的要求,发表评论作为答案:
perl -pe 's/playOrder="\K\d+"/++$i . q(")/ge' infile > outfile
这个单线正在使用由评估创建的替换字段,创建一个序列1",如2"...
1"
2"
如果使用前瞻断言而不是插入新的双引号,则可以进行进一步优化":
"
perl -pe 's/playOrder="\K\d+(?=")/++$i/ge' infile > outfile