nanshanjin 发表于 2017-11-06 13:57

匹配两行之间并计数

文件格式如下:
consensus
model
primary
primary
primary
primary
consensus
model
primary
primary
primary
primary
consensus
model
primary
primary
primary
primary
primary
primary
primary
consensus

匹配consensus之间的内容并计数,输出
consensus1 number1
consensus2 number2
。。。。
number1是第一个consensus1与第二个consensus2之间的数量,以此类推,文件很大,几万行吧

523066680 发表于 2017-11-06 21:14

回复 1# nanshanjin

计算primary 还是 非consensus的行都算?

#http://bbs.chinaunix.net/thread-4289910-1-1.html

my $spec = "consensus";
my $line;
my ($mi, $ni) = (0, 0);
while ( $line = <DATA> )
{
    if ($line=~/^consensus\r?\n?/i)
    {
      printf "%s%d %d\n", $spec, $mi, $ni if ($mi > 0);
      $mi++;
      $ni = 0;
    }
    else
    {
      $ni++;
    }
}

__DATA__
consensus
model
primary
primary
primary
primary
consensus
model
primary
primary
primary
primary
consensus
model
primary
primary
primary
primary
primary
primary
primary
consensus

输出
consensus1 5
consensus2 5
consensus3 8
页: [1]
查看完整版本: 匹配两行之间并计数