Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在文件中搜索字符串并提取下一行_Perl - Fatal编程技术网

Perl 在文件中搜索字符串并提取下一行

Perl 在文件中搜索字符串并提取下一行,perl,Perl,我正在尝试搜索文件中的字符串。该字符串可以在文件中出现多次。如果找到,我需要提取和标记中它下面的行 到目前为止,我有以下代码: 仅打印当前行。如何让它打印和标记中的下一行 #!/usr/bin/perl use strict; my $find = "Primary objectives"; open(FILE,"obj_doc.html") or die "cannot open file "; my @line = <FILE>; for (@line) { if ($

我正在尝试搜索文件中的字符串。该字符串可以在文件中出现多次。如果找到,我需要提取

标记中它下面的行

到目前为止,我有以下代码: 仅打印当前行。如何让它打印

标记中的下一行

#!/usr/bin/perl
use strict;
my $find = "Primary objectives";

open(FILE,"obj_doc.html") or die "cannot open file ";
my @line = <FILE>;
for (@line) {
    if ($_ =~/$find/) {
        print "Current line is: $_\n";
        # get the next line
        # if next line begins with <P> and ends with </P> extract it. else ignore it
        my $nextline = <FILE>;
        printf "$nextline";

        if ($nextline =~ /^<P>:+<\/P>$/) {
            print $nextline;
        }
    }
}


close(FILE);
#/usr/bin/perl
严格使用;
my$find=“主要目标”;
打开(文件“obj_doc.html”)或死“无法打开文件”;
我的@line=;
for(@line){
如果($\ux=~/$find/){
打印“当前行为:$\n”;
#接下一行
#如果下一行以

开头,以

结尾,则提取它。否则忽略它 我的$nextline=; printf“$nextline”; 如果($nextline=~/^

:+$/){ 打印$nextline; } } } 关闭(文件);

非常感谢。
-Simak触发器操作员是你肮脏工作的朋友

perl -ne'print if/<P>/../<\/P>/'
perl-ne'print if/

/../'


无论如何,使用正确的解析器进行严肃的工作

为什么要重新发明轮子?有几种方法使这变得容易。我同意@m0skit0,使用解析器。FWIW如图所示,您的骨架程序存在一个基本缺陷,即您已将整个文件读入
@line
中,然后在
@line
循环中,您尝试使用
my$nextline=”进一步读取该文件但当然,此时的文件句柄没有更多的东西可以提供!!谢谢-是的,我知道解析器。但是使用它的问题是,生成的标记在我需要处理的所有文件中都不一致。例如:在文件1中,主要目标在段落中,而在文件3中,主要目标是标题。此外,文件中没有其他标识符可以指定提取它们。那么,这个迂回搜索和提取。检查一下
/^

:+$/

中的冒号是什么意思?