如何使用perl在每条记录的第一行相同时删除文件中的重复记录?

时间:2014-02-09 20:47:14

标签: perl

文件中的每条记录都由数据分隔,并将输入记录分隔符设置为数据

例如,名为duplicates.txt的文件具有以下记录

 __Data__
 cccccccc
 slslslsl
 dkdkdkdk

 __Data__
 cccccccc
 rrrrrrrr
 dkdkdkdk

现在我想通过比较每条记录的第一行来删除此文件中的重复记录...有人可以通过使用perl的示例为我提供一个理想的入门方法。

我知道至少我必须将输入记录分隔符设置为以下内容:

   $/="__Data__\n";

接下来,我打开并阅读记录的文件。

    open my $read_line,"<:encoding(utf-8)","/home/perl/duplicate_records.txt";
    while(<$read_line>)
    {
      # lost at this point but will try to get the first line after the input record separter
      if(/__Data__\n(.*)/)
      {
          my $first_line = $1;
          # not sure what to do next
      }
    }

1 个答案:

答案 0 :(得分:2)

__Data__\n$_中的最后一个字符,因此您无法匹配它们之后的任何内容。

my %seen;
while (<$read_line>)
{
  if (/(.*)/ and !$seen{$1}++)
  {
      print "$_ [has unique first line]\n";
  }
}