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中,主要目标是标题。此外,文件中没有其他标识符可以指定提取它们。那么,这个迂回搜索和提取。检查一下/^:+$/
中的冒号是什么意思?