文件中的每条记录都由数据分隔,并将输入记录分隔符设置为数据
例如,名为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
}
}
答案 0 :(得分:2)
__Data__\n
是$_
中的最后一个字符,因此您无法匹配它们之后的任何内容。
my %seen;
while (<$read_line>)
{
if (/(.*)/ and !$seen{$1}++)
{
print "$_ [has unique first line]\n";
}
}