用PERL处理一个文件中有重复的数据!
有一个文件,其中有一些数据的前缀是重复的,需要将这些前缀相同的数据完整的名字提取出来。不是很懂。文件中,“_”前面是数据前缀,绿色框中我标出了前缀相同的两个数据,就是需要...
有一个文件,其中有一些数据的前缀是重复的,需要将这些前缀相同的数据完整的名字提取出来。 不是很懂。
文件中,“_”前面是数据前缀,绿色框中我标出了前缀相同的两个数据,就是需要将这些前缀相同的数据连带“_”后面的数据输出到一个新的文本文件。
文件部分内容:
GRMZM5G898290_P01
GRMZM5G898290_P02
GRMZM2G025642_P01
GRMZM2G025642_P02
GRMZM2G009892_P04
GRMZM2G100593_P01
GRMZM2G181605_P01
GRMZM2G011598_P01
GRMZM2G393433_P01
GRMZM2G393433_P02
GRMZM2G154182_P03
GRMZM2G179885_P02
GRMZM2G179885_P03
GRMZM2G167018_P01
GRMZM2G042494_P01
GRMZM2G152543_P01
AC198937.4_FGP005
GRMZM2G139700_P01
GRMZM2G009892_P01
GRMZM2G009892_P02
GRMZM2G009892_P03
GRMZM2G018436_P01
GRMZM2G159094_P01
GRMZM2G154182_P01
GRMZM2G154182_P02
GRMZM2G092465_P03
GRMZM2G155816_P01
GRMZM2G162739_P02
GRMZM2G062650_P01
GRMZM2G062650_P02
GRMZM2G162739_P01
GRMZM2G112548_P01
GRMZM2G092465_P01
AC212859.3_FGP008
GRMZM2G068973_P01
GRMZM2G082709_P01
GRMZM2G125777_P01
GRMZM2G312201_P04
GRMZM2G079632_P02
GRMZM2G340305_P01
GRMZM2G104074_P01
GRMZM2G430522_P02
GRMZM2G171395_P01
GRMZM2G099144_P01
GRMZM2G430522_P03
GRMZM2G430522_P01
GRMZM2G347043_P01
GRMZM2G479980_P01 展开
文件中,“_”前面是数据前缀,绿色框中我标出了前缀相同的两个数据,就是需要将这些前缀相同的数据连带“_”后面的数据输出到一个新的文本文件。
文件部分内容:
GRMZM5G898290_P01
GRMZM5G898290_P02
GRMZM2G025642_P01
GRMZM2G025642_P02
GRMZM2G009892_P04
GRMZM2G100593_P01
GRMZM2G181605_P01
GRMZM2G011598_P01
GRMZM2G393433_P01
GRMZM2G393433_P02
GRMZM2G154182_P03
GRMZM2G179885_P02
GRMZM2G179885_P03
GRMZM2G167018_P01
GRMZM2G042494_P01
GRMZM2G152543_P01
AC198937.4_FGP005
GRMZM2G139700_P01
GRMZM2G009892_P01
GRMZM2G009892_P02
GRMZM2G009892_P03
GRMZM2G018436_P01
GRMZM2G159094_P01
GRMZM2G154182_P01
GRMZM2G154182_P02
GRMZM2G092465_P03
GRMZM2G155816_P01
GRMZM2G162739_P02
GRMZM2G062650_P01
GRMZM2G062650_P02
GRMZM2G162739_P01
GRMZM2G112548_P01
GRMZM2G092465_P01
AC212859.3_FGP008
GRMZM2G068973_P01
GRMZM2G082709_P01
GRMZM2G125777_P01
GRMZM2G312201_P04
GRMZM2G079632_P02
GRMZM2G340305_P01
GRMZM2G104074_P01
GRMZM2G430522_P02
GRMZM2G171395_P01
GRMZM2G099144_P01
GRMZM2G430522_P03
GRMZM2G430522_P01
GRMZM2G347043_P01
GRMZM2G479980_P01 展开
2个回答
展开全部
#!usr/bin/perl -w
use warnings;
my $srcfile = "original.txt";
my $desfile = "processed.txt";
open INFILE, "<$srcfile" or die "Cannot Open in file:$!";
open OUTFILE, ">$desfile" or die "Cannot Open out file:$!";
my %hash_table;
while(<INFILE>)
{
my $prefix=substr($_,0,index($_,"_"));
if(defined($hash_table{$prefix}))
{
push @{$hash_table{$prefix}},$_;
}
else
{
my @array=($_);
$hash_table{$prefix}=\@array;
}
}
foreach my $key (keys %hash_table)
{
if(@{$hash_table{$key}}>1)
{
foreach my $item (@{$hash_table{$key}})
{
print OUTFILE $item;
}
}
}
close INFILE;
close OUTFILE;
#希望能够帮到你,代码如果有什么问题可以直接问
use warnings;
my $srcfile = "original.txt";
my $desfile = "processed.txt";
open INFILE, "<$srcfile" or die "Cannot Open in file:$!";
open OUTFILE, ">$desfile" or die "Cannot Open out file:$!";
my %hash_table;
while(<INFILE>)
{
my $prefix=substr($_,0,index($_,"_"));
if(defined($hash_table{$prefix}))
{
push @{$hash_table{$prefix}},$_;
}
else
{
my @array=($_);
$hash_table{$prefix}=\@array;
}
}
foreach my $key (keys %hash_table)
{
if(@{$hash_table{$key}}>1)
{
foreach my $item (@{$hash_table{$key}})
{
print OUTFILE $item;
}
}
}
close INFILE;
close OUTFILE;
#希望能够帮到你,代码如果有什么问题可以直接问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询