awk -F '[. ]+' '$1!=a{ml=length($3);a=$1;b[$1]=$3}$1==a{if(length($3)>ml){ml=length($3);b[$1]=$3}}END{for(i in b)print i" "b[i]}' file
复制代码
hhjk KJGSEGJOAKFFDSMFAPOKEF
hhjkl JDNVKHFBAKHFAKFAFJNSADFJAS
rtyuip00 AFHBVSFHUACFKUSHDBAKFHAKUFHSADKFUA
qwer HDFKSHFGSERYFIEURHFSUFDSHVBSJEUABFUHABFCAHFBC作者: super_two 时间: 2015-08-08 10:40
这是我写的,结果不对,我并没有办法将我说的思路用perl写出来,麻烦您看看
#!/usr/bin/perl -w
use warnings;
use strict;
use Bio::SeqIO;
my $data=$ARGV[0];
open (W,"<$data") || die $!;
my %gene;
while(<W>){
chomp;
$gene{$_}++;
}
close W;
open (M,"> $data.longest") || die $!;
my $all=Bio::SeqIO->new(-file=>"$data",-format=>'fasta');
while(my $seq=$all->next_seq){
my $id=$seq->id;
my $seq=$seq->seq;
$gene{$seq}=length($seq);
push(my @length,$gene{$seq});
my @ids=split(/\|/,$id);
my @newid=split(/\./,$id);
foreach $a (@newid){
if ($a){
my @length_1 = sort{$a<=>$b}@length;
print ">$id\n";
print "$seq\n";
}
else{
print ">$id\t";
print "$seq\n";
作者: super_two 时间: 2015-08-08 11:12
这是我写的,结果不对,我并没有办法将我说的思路用perl写出来,麻烦您看看
#!/usr/bin/perl -w
use warnings;
use strict;
use Bio::SeqIO;
my $data=$ARGV[0];
open (W,"<$data") || die $!;
my %gene;
while(<W>){
chomp;
$gene{$_}++;
}
close W;
open (M,"> $data.longest") || die $!;
my $all=Bio::SeqIO->new(-file=>"$data",-format=>'fasta');
while(my $seq=$all->next_seq){
my $id=$seq->id;
my $seq=$seq->seq;
$gene{$seq}=length($seq);
push(my @length,$gene{$seq});
my @ids=split(/\|/,$id);
my @newid=split(/\./,$id);
foreach $a (@newid){
if ($a){
my @length_1 = sort{$a<=>$b}@length;
print ">$id\n";
print "$seq\n";
}
else{
print ">$id\t";
print "$seq\n";