perl - 如何在 Perl 中打印匹配的行和接下来的三行?

标签 perl

我需要搜索一个模式并将该行以及接下来的 3 行写入一个文件 (FILE)。这是一个正确的方法吗?谢谢。

print FILE if /^abc/;
$n=3 if /^abc/;
print FILE if ($n-- > 0);

最佳答案

我喜欢 ..运算符(operator):

perl -ne 'print if (/abc/ and $n=3) .. not $n--'

但是您没有描述如果在以下三行中重复 abc 模式会发生什么。如果你想重新启动计数器,如果用 double 印修复一个小错误,你的方法是正确的。
perl -ne'$n=4 if/abc/;print if$n-->0'

关于perl - 如何在 Perl 中打印匹配的行和接下来的三行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/989243/

相关文章:

perl - 当我使用 Perlapp 将 Perl 脚本转换为可执行文件时,为什么缺少一些字符?

perl - 为什么运行 Apache+FastCGI 的 Catalyst 应用程序不提供动态内容?

perl - 在 Perl 中使用 map 仅在键存在时进行映射

Perl SOAP 服务器不再返回 base64

linux - perl 中的 '\b' 字符是如何工作的?

perl - 运行 Inline::C 时出错

mysql - Perl DBI 一次执行多个 SQL 查询

调用子程序时的 perl 自动激活

multithreading - 用数组请求多线程

perl - 如何使用变量名引用哈希?