免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4750 | 回复: 5
打印 上一主题 下一主题

求个程序 [复制链接]

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-02-04 19:52 |只看该作者 |倒序浏览
我有两个文件 1.txt
  1. >a
  2. MVKFFRKTGKDGWIALGGILLSMTGSEAMFADLGHFTSASVRVAFITVIYPCLILQYMGH
  3. AAFLSKNTFHMPTGFYDTIPEPVFWPVFVVATLAAVVGSQAVISATFSIVKQCHALGCFP
  4. RVKVVHTSRWIYGQIYIPEINWILMVLCVAVTIAFRDTTLIGNAYGIACMTVMFVTTFLM
  5. ALIIIFVWQRNIIFALVFLVFFGSIEAVYLSSSLMKVTQGGWVPLVLAFIFMSVMYIWHY
  6. GLRRKYQFDLQNKVSMRSILSLGPSLGIVRVPGIGLIYTELVTGVPSIFSHFVTNLPAFH
  7. EVLVFLCVKSVPVPYVSPDERYLVGRIGPKEYRMYRCIVRYGYKDVQRDDDNFENMLVMN
  8. IAKFIMMEAEDASSSASYDVSNEGRMAVITTTDASGSPLAMRDFDGLADSMTMRSSKSET
  9. LRSLQSSYEQESPSVSRRRRVRFEVPEEDGMGRQVKEELMALVEAKHAGVAYIMGHSYIK
  10. ARRSSSFLKKFAIDVGYSFLRKNCRGPSVTLHIPHISLIEVGMIYYV
  11. >a
  12. MKKIEDNNTLVFIVDLKADKKIKAAVKKMYDIQAKKVNTLIRPDGKKKAYVKLPCMGVAY
  13. ETTKSGVGVASMGVMRLKLVMKSIVLIVMARVLGIYDLIIAAIISAGINPKAKPKPYFLD
  14. GYAHLSFELACSLAGLVAGMAIS
  15. >b
  16. MLQEAKAYAQENGLFFMETSAKIATNVNDVFYEIAKKLLQGQQVQNPQGGMVLN
  17. >b
  18. MKKIEDNNTLVFIVDLKADKKIKAAVKKMYDIQAKKVNTLIRPDGKKKAYVKLPCKHPSD
  19. FPSLPSMSLSPAGSNRPFHTPLAPHPRWCLGMGVAYETTKSGVGVASMGVMRLKLVMKSI
  20. VLIVMARVLGIYDLIIAAIISAGINPKAKPKPYFLDGYAHLSFELACSLAGLVAGMAISI
  21. VRDTRVSVADCEGYPYLFLSISIEWNGGSDTMDEILVRIQQLEEAVVKRERAMAYTFNHQ
  22. WRARSATSLGNFSYEVGKGGWGWSWMDRWIVARPWESRSMVHPENPKKAQAKKENTTNPL
  23. >c
  24. PSLPSMSLSPAGSNRPFHTPLAPHPRWCLGMGVAYETTKSGVGVASMGVMRLKLVMKSI
复制代码
2.txt
  1. >a
  2. >b
复制代码
想从1.txt中提取出来2.txt中含有的最长序列
结果如下:
  1. >a
  2. MVKFFRKTGKDGWIALGGILLSMTGSEAMFADLGHFTSASVRVAFITVIYPCLILQYMGH
  3. AAFLSKNTFHMPTGFYDTIPEPVFWPVFVVATLAAVVGSQAVISATFSIVKQCHALGCFP
  4. RVKVVHTSRWIYGQIYIPEINWILMVLCVAVTIAFRDTTLIGNAYGIACMTVMFVTTFLM
  5. ALIIIFVWQRNIIFALVFLVFFGSIEAVYLSSSLMKVTQGGWVPLVLAFIFMSVMYIWHY
  6. GLRRKYQFDLQNKVSMRSILSLGPSLGIVRVPGIGLIYTELVTGVPSIFSHFVTNLPAFH
  7. EVLVFLCVKSVPVPYVSPDERYLVGRIGPKEYRMYRCIVRYGYKDVQRDDDNFENMLVMN
  8. IAKFIMMEAEDASSSASYDVSNEGRMAVITTTDASGSPLAMRDFDGLADSMTMRSSKSET
  9. LRSLQSSYEQESPSVSRRRRVRFEVPEEDGMGRQVKEELMALVEAKHAGVAYIMGHSYIK
  10. ARRSSSFLKKFAIDVGYSFLRKNCRGPSVTLHIPHISLIEVGMIYYV
  11. >b
  12. MKKIEDNNTLVFIVDLKADKKIKAAVKKMYDIQAKKVNTLIRPDGKKKAYVKLPCKHPSD
  13. FPSLPSMSLSPAGSNRPFHTPLAPHPRWCLGMGVAYETTKSGVGVASMGVMRLKLVMKSI
  14. VLIVMARVLGIYDLIIAAIISAGINPKAKPKPYFLDGYAHLSFELACSLAGLVAGMAISI
  15. VRDTRVSVADCEGYPYLFLSISIEWNGGSDTMDEILVRIQQLEEAVVKRERAMAYTFNHQ
  16. WRARSATSLGNFSYEVGKGGWGWSWMDRWIVARPWESRSMVHPENPKKAQAKKENTTNPL
复制代码
请大神们把各自的写法展示一下!谢谢!

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
2 [报告]
发表于 2015-02-05 09:56 |只看该作者
自己顶一下啦

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
3 [报告]
发表于 2015-02-06 09:56 |只看该作者
回复 1# 清泉一边
  1. #!usr/bin/perl
  2. use Bio::SeqIO;
  3. use strict;

  4. my $IN=Bio::SeqIO->new(-file=>"a.txt",-format=>'fasta');
  5. my (%Seqs,%Seql);
  6. while (my $seq=$IN->next_seq()){
  7.         unless($Seqs{$seq->id()}){
  8.                 $Seql{$seq->id()}=$seq->length();
  9.                 $Seqs{$seq->id()}=$seq;
  10.         }else{
  11.                 unless($seq->length() <= $Seql{$seq->id()}){
  12.                         $Seql{$seq->id()}=$seq->length();
  13.                         $Seqs{$seq->id()}=$seq;
  14.                 }
  15.         }
  16. }
  17. $IN->close();

  18. open (IN,"<b.txt");
  19. my $OUT=Bio::SeqIO->new(-file=>">c.txt",-format=>"fasta");
  20. while(my $line=<IN>){
  21.         chomp($line);
  22.         $line=~s/^\>//;
  23.         $OUT->write_seq($Seqs{$line});
  24. }
  25. close IN;
  26. $OUT->close();

  27. print "Finished!\n";
复制代码
a.txt
  1. >a
  2. MVKFFRKTGKDGWIALGGILLSMTGSEAMFADLGHFTSASVRVAFITVIYPCLILQYMGH
  3. AAFLSKNTFHMPTGFYDTIPEPVFWPVFVVATLAAVVGSQAVISATFSIVKQCHALGCFP
  4. RVKVVHTSRWIYGQIYIPEINWILMVLCVAVTIAFRDTTLIGNAYGIACMTVMFVTTFLM
  5. ALIIIFVWQRNIIFALVFLVFFGSIEAVYLSSSLMKVTQGGWVPLVLAFIFMSVMYIWHY
  6. GLRRKYQFDLQNKVSMRSILSLGPSLGIVRVPGIGLIYTELVTGVPSIFSHFVTNLPAFH
  7. EVLVFLCVKSVPVPYVSPDERYLVGRIGPKEYRMYRCIVRYGYKDVQRDDDNFENMLVMN
  8. IAKFIMMEAEDASSSASYDVSNEGRMAVITTTDASGSPLAMRDFDGLADSMTMRSSKSET
  9. LRSLQSSYEQESPSVSRRRRVRFEVPEEDGMGRQVKEELMALVEAKHAGVAYIMGHSYIK
  10. ARRSSSFLKKFAIDVGYSFLRKNCRGPSVTLHIPHISLIEVGMIYYV
  11. >a
  12. MKKIEDNNTLVFIVDLKADKKIKAAVKKMYDIQAKKVNTLIRPDGKKKAYVKLPCMGVAY
  13. ETTKSGVGVASMGVMRLKLVMKSIVLIVMARVLGIYDLIIAAIISAGINPKAKPKPYFLD
  14. GYAHLSFELACSLAGLVAGMAIS
  15. >b
  16. MLQEAKAYAQENGLFFMETSAKIATNVNDVFYEIAKKLLQGQQVQNPQGGMVLN
  17. >b
  18. MKKIEDNNTLVFIVDLKADKKIKAAVKKMYDIQAKKVNTLIRPDGKKKAYVKLPCKHPSD
  19. FPSLPSMSLSPAGSNRPFHTPLAPHPRWCLGMGVAYETTKSGVGVASMGVMRLKLVMKSI
  20. VLIVMARVLGIYDLIIAAIISAGINPKAKPKPYFLDGYAHLSFELACSLAGLVAGMAISI
  21. VRDTRVSVADCEGYPYLFLSISIEWNGGSDTMDEILVRIQQLEEAVVKRERAMAYTFNHQ
  22. WRARSATSLGNFSYEVGKGGWGWSWMDRWIVARPWESRSMVHPENPKKAQAKKENTTNPL
  23. >c
  24. PSLPSMSLSPAGSNRPFHTPLAPHPRWCLGMGVAYETTKSGVGVASMGVMRLKLVMKSI
复制代码
b.txt
  1. >a
  2. >b
复制代码
c.txt
  1. >a
  2. MVKFFRKTGKDGWIALGGILLSMTGSEAMFADLGHFTSASVRVAFITVIYPCLILQYMGH
  3. AAFLSKNTFHMPTGFYDTIPEPVFWPVFVVATLAAVVGSQAVISATFSIVKQCHALGCFP
  4. RVKVVHTSRWIYGQIYIPEINWILMVLCVAVTIAFRDTTLIGNAYGIACMTVMFVTTFLM
  5. ALIIIFVWQRNIIFALVFLVFFGSIEAVYLSSSLMKVTQGGWVPLVLAFIFMSVMYIWHY
  6. GLRRKYQFDLQNKVSMRSILSLGPSLGIVRVPGIGLIYTELVTGVPSIFSHFVTNLPAFH
  7. EVLVFLCVKSVPVPYVSPDERYLVGRIGPKEYRMYRCIVRYGYKDVQRDDDNFENMLVMN
  8. IAKFIMMEAEDASSSASYDVSNEGRMAVITTTDASGSPLAMRDFDGLADSMTMRSSKSET
  9. LRSLQSSYEQESPSVSRRRRVRFEVPEEDGMGRQVKEELMALVEAKHAGVAYIMGHSYIK
  10. ARRSSSFLKKFAIDVGYSFLRKNCRGPSVTLHIPHISLIEVGMIYYV
  11. >b
  12. MKKIEDNNTLVFIVDLKADKKIKAAVKKMYDIQAKKVNTLIRPDGKKKAYVKLPCKHPSD
  13. FPSLPSMSLSPAGSNRPFHTPLAPHPRWCLGMGVAYETTKSGVGVASMGVMRLKLVMKSI
  14. VLIVMARVLGIYDLIIAAIISAGINPKAKPKPYFLDGYAHLSFELACSLAGLVAGMAISI
  15. VRDTRVSVADCEGYPYLFLSISIEWNGGSDTMDEILVRIQQLEEAVVKRERAMAYTFNHQ
  16. WRARSATSLGNFSYEVGKGGWGWSWMDRWIVARPWESRSMVHPENPKKAQAKKENTTNPL
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
4 [报告]
发表于 2016-11-22 22:43 |只看该作者
本帖最后由 sunzhiguolu 于 2016-11-23 05:58 编辑
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. open (my $FHr, '<', shift);
  5. my %hData = map {/(\w+)/; $1 => []} <$FHr>;
  6. close ($FHr);

  7. open ($FHr, '<', shift);
  8. my ($id, $flag, $pos);
  9. while (<$FHr>){
  10.     if (/\A>(\w+)/){
  11.         $flag = exists ($hData{$1}) ? 1 : 0;
  12.         if ($flag){
  13.             $id = $1;
  14.             $pos = @{$hData{$id}};
  15.         }
  16.         next;
  17.     }
  18.     $hData{$id}[$pos] .= $_ if ($flag);
  19. }
  20. close ($FHr);

  21. foreach (keys %hData){
  22.     my ($str) = sort {length ($b) <=> length ($a)} @{$hData{$_}};
  23.     print "$_\n$str";
  24. }
复制代码

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
5 [报告]
发表于 2016-11-24 11:38 |只看该作者

  1. awk -vRS='>' 'NR==FNR&&NF{a[$1]=1;next}a[$1]&&length($0)>length(b[$1]){b[$1]=$0}END{for(i in b)printf RS b[i]}' 2.txt 1.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP