+ -
当前位置:首页 → 问答吧 → 新手请教一个问题,谢谢

新手请教一个问题,谢谢

时间:2010-08-20

来源:互联网

大意是这样,有一个文件:
1 abc........
yy...           #以yy开头的数据
yy.....
..
..
..
gg            #最后有一个不是yy的数据
2  bcd..........    #格式同1是一模一样的
yy...
yy...
..
..
..
gg
3 .....
..
gg
如此循环下去,
现在,我要得到1下面yy..这几个数据,
编程为 print $_ if /^yy/;
但是这个程序会把2下面的yy也匹配出来,同理3,4等等后面的也会匹配出来
但是我只要把1下面的yy弄出来,
请问怎么弄的?
如果要弄个程序要把 1,2,3等等单独下面的yy弄出来又要怎么编呢?

作者: 179147112   发布时间: 2010-08-20

while (<FH>) {
  next if /^1\s+abc$/;
  push @array,$_  if /^yy/;
  last if /^2/;
}
print @array;

作者: leigh111   发布时间: 2010-08-20

  1. #!perl

  2. while(<DATA>){
  3.         /^(\d+) .*/ and do {
  4.                 close OUT;
  5.                 open OUT,">$1.txt";
  6.         };
  7.         /^(\d+) .*/../^gg/ and do {
  8.                 print OUT  $_ if /^yy/;
  9.         };
  10. }
  11. __DATA__
  12. 1 abc........
  13. yy1         #以yy开头的数据
  14. yy1
  15. yy1         #以yy开头的数据
  16. yy1
  17. gg            #最后有一个不是yy的数据
  18. 2  bcd..........    #格式同1是一模一样的
  19. yy2
  20. yy2
  21. gg
  22. 3 .....
  23. yy3
  24. yy3
  25. yy3
  26. gg
复制代码

作者: ttcn_cu   发布时间: 2010-08-20