1

我正在尝试在文件中搜索字符串。该字符串可以在文件中出现多次。如果找到,我需要在<P>and</P>标记中提取它下面的行。

到目前为止,我有以下代码:仅打印当前行。我怎样才能让它打印 <P></P>标签中的下一行?

#!/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);

提前非常感谢。- 西马克

4

1 回答 1

0

触发器操作员是您的肮脏工作的朋友。

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

无论如何,使用适当的解析器进行严肃的工作!

于 2013-06-26T08:48:20.977 回答