perl - 用 perl 替换指定行号上的模式

标签 perl sed

<分区>

我正在尝试使用 perl 的方便的非贪婪搜索模式,但让 perl 搜索和替换指定行的运气为零,例如:

perl -pi -e '10,19s/pat1/pat2/g' file

我经常使用 sed。有没有办法使用 perl 来实现这一点?我遇到了麻烦,sed 的非贪婪算法无法满足我的需求,但 perl 的意志可以。

最佳答案

使用 $.与行号匹配的变量。

如果您想替换这两个行号(包括)之间的模式,您可以使用 Range operator ..如下所示:

perl -i -pe 's/pat1/pat2/g if 10 .. 19' file

关于perl - 用 perl 替换指定行号上的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25296525/

相关文章:

windows - 如何在文件夹中的所有文件中执行文本替换?

arrays - 将数据从文件读取到数组中以在 Perl 脚本中进行操作

linux - 在加载 perl 模块之前修改 ld.so 路径

regex - Shell 脚本 - sed 不起作用

Linux搜索和替换一个复杂的字符串

python - 如何匿名化所选标签的 XML 数据?

perl - 使用Perl从远程 "Mail-in-aBox"服务器发送电子邮件

perl - 删除行: after pattern1 and between pattern2 and pattern3 using awk/sed/perl

linux - 从 html 中删除某些 javascript

linux - 如何替换两点之间的所有行并将其替换为sed中的一些文本