Chinaunix

标题: 匹配两行之间并计数 [打印本页]

作者: 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的行都算?

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

  2. my $spec = "consensus";
  3. my $line;
  4. my ($mi, $ni) = (0, 0);
  5. while ( $line = <DATA> )
  6. {
  7.     if ($line=~/^consensus\r?\n?/i)
  8.     {
  9.         printf "%s%d %d\n", $spec, $mi, $ni if ($mi > 0);
  10.         $mi++;
  11.         $ni = 0;
  12.     }
  13.     else
  14.     {
  15.         $ni++;
  16.     }
  17. }

  18. __DATA__
  19. consensus
  20. model
  21. primary
  22. primary
  23. primary
  24. primary
  25. consensus
  26. model
  27. primary
  28. primary
  29. primary
  30. primary
  31. consensus
  32. model
  33. primary
  34. primary
  35. primary
  36. primary
  37. primary
  38. primary
  39. primary
  40. consensus
复制代码

输出
consensus1 5
consensus2 5
consensus3 8





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2