Perl搜索和捕获后的行

Perl搜索和捕获后的行,perl,search,Perl,Search,好吧,这可能是一个很容易回答的问题,但我正在努力解决。我试图让我的程序捕获某个单词后的所有内容,然后打印出来。例如,如果输入文本为 巴福福福 如果我正在搜索bar,那么我希望输出为“foo foo foo foo”。我希望我的问题有意义。任何帮助都将不胜感激!我对perl非常陌生,所以您能给出的解释越多越好。谢谢大家! #/usr/bin/env perl #! /usr/bin/env perl *ARGV = *DATA; # for demo only while (<>

好吧,这可能是一个很容易回答的问题,但我正在努力解决。我试图让我的程序捕获某个单词后的所有内容,然后打印出来。例如,如果输入文本为

巴福福福

如果我正在搜索bar,那么我希望输出为“foo foo foo foo”。我希望我的问题有意义。任何帮助都将不胜感激!我对perl非常陌生,所以您能给出的解释越多越好。谢谢大家!

#/usr/bin/env perl
#! /usr/bin/env perl

*ARGV = *DATA;  # for demo only

while (<>) {
  print "line $.: $1\n" if /bar\s+(.+)/;
}

__DATA__
you can't see me
bar foo foo foo foo
nope
*ARGV=*数据;#仅供演示 而(){ 如果/bar\s+(.+)/,则打印“行$:$1\n”; } __资料__ 你看不见我 巴福福福 不
输出:

line 2: foo foo foo foo 第2行:foo-foo-foo
#/usr/bin/env perl
*ARGV=*数据;#仅供演示
而(){
如果/bar\s+(.+)/,则打印“行$:$1\n”;
}
__资料__
你看不见我
巴福福福
不
输出:

line 2: foo foo foo foo
第2行:foo-foo-foo对于OP,//if语句后面的文本是Perl正则表达式$1用于参考第1组。组由()表示。阅读Perl正则表达式,因为它们非常有用。太棒了!有没有(简单的)方法来添加它来自哪一行?就像您的示例一样,输出将是:第2行:foor foo foofoo@user1440061,
打印“$:$1\n”
@user1440061特殊变量
$。
包含当前行号。有关示例,请参见和更新后的答案。对于OP,if语句后面//中的文本是Perl正则表达式$1用于参考第1组。组由()表示。阅读Perl正则表达式,因为它们非常有用。太棒了!有没有(简单的)方法来添加它来自哪一行?就像您的示例一样,输出将是:第2行:foor foo foofoo@user1440061,
打印“$:$1\n”
@user1440061特殊变量
$。
包含当前行号。有关示例,请参阅和更新的答案。