用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
展开
 我来答
bdqgfj
2013-02-06 · 超过15用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:42.4万
展开全部
#!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;
#希望能够帮到你,代码如果有什么问题可以直接问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dark_tom
2013-02-06 · TA获得超过1325个赞
知道小有建树答主
回答量:702
采纳率:0%
帮助的人:232万
展开全部
#!/usr/bin/perl
my $in=shift @ARGV;
open IN,"<$in";
while(<IN>){
chomp;
if($_=~/^\s*$/){next;}
if($_=~/(.*)_.*/){
open NEW,">>$1";
print NEW "$_\n";
close NEW;
}
}

记得选为满意答案哦,我测试过的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式