当每个记录的第一行都相同时,如何使用perl删除文件中的重复记录?
文件中的每条记录都由数据分隔,并将输入记录分隔符设置为数据 例如,名为duplicates.txt的文件具有以下记录当每个记录的第一行都相同时,如何使用perl删除文件中的重复记录?,perl,Perl,文件中的每条记录都由数据分隔,并将输入记录分隔符设置为数据 例如,名为duplicates.txt的文件具有以下记录 __Data__ cccccccc slslslsl dkdkdkdk __Data__ cccccccc rrrrrrrr dkdkdkdk 现在我想通过比较每条记录的第一行来删除此文件中的重复记录。。。有没有人能给我一个理想的方法,通过一个使用perl的示例来开始这方面的工作 我知道至少我必须将输入记录分隔符设置为以下值: $/="__Data__\
__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
}
}
打开我的$read\u行,“\uuuuu Data\uuuu\n
是$\uuuu
中的最后一个字符,因此您无法匹配它们之后的任何内容
my %seen;
while (<$read_line>)
{
if (/(.*)/ and !$seen{$1}++)
{
print "$_ [has unique first line]\n";
}
}
my%seed;
而()
{
if(/(.*)/和!$seen{$1}++)
{
打印“$\有唯一的第一行]\n”;
}
}
删除重复项是什么意思?是条目还是其中一条?如果只有一条,第一条还是第二条?我提到了如何通过比较每条记录的第一行来删除重复记录。换句话说,如果每条记录的第一行相同,则视为重复记录,需要删除。