计算一个单词在文件中出现的次数以及哪些行?

时间:2016-06-03 10:16:20

标签: regex perl

让我们解释一下在文本文件“script.txt”中,我必须找到“foo”这个词多少次出现以及在哪行中我必须列出那些行。

2 个答案:

答案 0 :(得分:0)

尝试以下

my $total;
my $lines;
open my $fh,"<","file.txt";
while (<DATA>)
{
    if(my $ech_count = () = /\bfoo\b/g)
    {
        $total+=$ech_count;
        $lines.=$.."\n";
    }

}
print " Total count : $total\nLines are: \n $lines";

在上面的脚本$ech_count中,存储= () =执行的行中的匹配数。

$.这是perl inbuild特殊变量,它给出了当前的行号。

答案 1 :(得分:0)

请试试这个:

use strict;
use warnings;

my @lines = <DATA>;
my ($word_count, $total) = '';
foreach my $single(@lines)
{
    if($single=~m/\bfoo\b/g)
    {
        $word_count = $single=~s/\bfoo\b/$&/g;
        print "Line Matched: $single\n";
        $total = $total + $word_count;
    }
}
print "Foo Count: $total\n";