阅读多行记录

时间:2013-05-18 18:23:03

标签: perl

鉴于每个数据记录的代码数据文件内容,我无法打印每条记录的第一行。但是,它确实打印了第一条记录的第一行,如:1aaaaaaaaaaaaa

特别提示:我确信有很多方法可以做到这一点,但就我而言,我需要一个遵循代码问题的解决方案....

记录的数据文件内容

  1aaaaaaaaaa 
  aaaaaaaaaaa 
  aaaaaaaaaaa 
  __Data__ 
  1bbbbbbbbbb 
  bbbbbbbbbbb 
  bbbbbbbbbbb 
  __Data__ 
  1cccccccccc 
  ccccccccccc 
  ccccccccccc 
  __Data__

  { 
      local $/="__Data__\n"; 

      open my $fh,"<","logA.txt" or die "Unable to open file"; 

      while(<$fh>) 
      { 
        # remove the input record separator value of __Data__\n
        chomp; 

        # display the line of each record 
        if(/([^\n]*)\n(.*)/sm) 
        { 
           print "$1\n"; 
        } 
      } 
      close ($fh); 
  } 

我得到了不受欢迎的输出:

  [root@yeti]# perl test2.pl    
  1aaaaaaaaaaaaa
  [root@yeti]#

我需要每条记录第一行的输出.....

1aaaaaaaaaaa    1bbbbbbbbbbb    1ccccccccccc

1 个答案:

答案 0 :(得分:2)

要进行调试,您会发现程序状态与您的期望不同,然后您回溯直至找到原因。

检查程序执行的操作会显示您的循环只输入一次,$_包含整个文件。这意味着Perl没有找到行终止符("__Data__\n")。

检查文件会在__Data__和换行符之间找到空格。从文件中删除尾随空格。

perl -i -ple's/\s+\z//' logA.txt