LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1708|回复: 1

如何比对两个文档,将相同的输出到另外一个文本中

[复制链接]
发表于 2010-5-19 20:31:30 | 显示全部楼层 |阅读模式
各位高手,我做生物信息学分析,要从一个文本文档中获得和另外一个文本文档中含有的关键词相同的数据,将其输出到另外一个文件,数据量比较大,想能不能用脚本完成,请给位帮帮忙,谢谢
我要从
如>Contig3613
TTCATTTGCTGGTAACCAATTTCAGAATGTGTGTAATTAATAAATAATTT
GGTGCA
>Contig3612
TTTAATGCTGGAATTTTTGTTGATAAAATGCGATGAATGCAAAAAAAAAA
AAAAAGTA
>Contig3611
ATTATTTTCATCTTCGCATTGGTTAGCATCGATTGACACATTTTAATTTG
AATAAAGCTTGGTTTGGATT
>Contig3610
ATTAGCGAAGAACGGACTTCACAATTAATATTGTCAGGGTTTTTATTCTT
TGGAAATTTTATGTAAATAAA
>Contig3609
CATTAGCGAAGAACGGACTTCACAATTAATATTGTCAGGGTTTTTATTCT
TTGGAAATTTTATGTAAATAAA
>Contig3608
TTATTATTGTATTTGCTTAGTGCGTAAAATGTAGATATAATAAATTTGAA
CTGCTANAAAAAAAAAAAAAAAAAAAAAA
>Contig3607
GGCCGCCAAAATGCGTCGGAATGCCTCTTCATCGTATCGCCATGGGCGAG
AGCCGATTGATTTAGACTGTGCAAAGATTGACGATATTGGTGACAATGCG
G
>Contig3606
TTTTTTTTTTTTTTTTTTTTTCACAGTATAAGAGTTTCTTATCAAAACGT
TGTCGATTATGCGGACACAAATAAAGTTTTTGTGCAAAATATTGAGATAA
CRTTT
>Contig3605
ATGGCATAAGCGTGCTTAACTGCGAGACCGACAAGTCGAGCAGGTGCGAA
AGCAGGTCATAGTGATCCGGTGGTTCTGTATGGAAGGGCCATCGCTCAAC
GGATAAA
>Contig3604
CGGCGGAAGTGAAGACGGACTGACTGTCGGTCGACCGAATGATCCATTGA
CATTGATCTTTTTATTTTGATACTTTTGCAAAGTGATCTATAAATTATTT
TTCCTYCAAA
>Contig3603
TGGTCTGCTTGCACACGAACTGAGTGATACCCTGCTTCMGGAAAAGCCAC
TAAGCTTCAGCTATAGACGACCGTACCGCAAACCGACACTGGTGCGCGAG
ATGAGTATTCTAAGGCGCTTGA
>Contig3602
CTTTTTCAGCAGATTAATTAATATACGATGACAGGTGATAATACAATATT
GATACGCAATATGCATCGCAGTAATGCGTGAATATATATAGAAGATAAAG
TTTTTAAAAAAAAAAAAAAAAAAAAAA
>Contig3601
GGCCGCCARGAGGATTTGCGCCACTCSTCGATTCTTTCGAAGCGATGKTA
CGCCCKAAATTGTTACATGCGTGTCCGCGATGTTTTTGAGCGGCCAATTG
GCGGTGTGCCAGGGGCGAAAGWYAAATTGG
>Contig3600
TACACACATATTCGCTTGCCCCTGATGAGTTTGACTAATTGTAAGATGGG
TCTCTCTGCTTGCTGTTTACTGTTGGGCAATTTGAATTTTTGCATTCATT
CAAATTCAAATGCCACCCGTAAATGGGTCATT
>Contig3599
CACTTTCGGCTCGCTTGGCAGAGGGCGTCAGGGCATTTGATGASASCGAC
GGAAGAGAGAAAGACGAAATTTATAACCATTTTTTGAATTTGTTTTGTTG
TGTCTTCTCTATTTTTCTTTTTGCTTAAAACACACACG
>Contig3598
MTACGCACTGAACGACCCAAACMGATTGTTAGCTGTCGTCCCTTTTCTTG
TCCGTACAWATTTTAATGGCGCTCGTGTTGTGCAGCGGGCATTGATCAGT
CTCGTGCAGTGCTGCATTGTCCGTCAGGTGGACAGTCAGCCGAGCATGGT
CACCT
找出和另外一个文档中关键词匹配上的数据

Contig3613
Contig3611
Contig3609
Contig3606

,将整个(如>Contig3613
TTCATTTGCTGGTAACCAATTTCAGAATGTGTGTAATTAATAAATAATTT
GGTGCA)输出到另外一个文件中

请大家帮忙,谢谢了!!
发表于 2010-6-9 19:10:06 | 显示全部楼层
有个方案,不知道可不可行
文档1, 文档2
先将文档1的每一个你需要判断是否相同的最小单位(如一行)生成一个数据如
Contig3613TTCATTTGCTGGTAACCAATTTCAGAATGTGTGTAATTAATAAATAATTTGGTGCA
用crc32应该就好了,或md5,sha1之类的
最终文档1的结构:
["-61045577", "-61045578", ...]
然后再遍一块一块的读取第二个文档,把内容再用crc32之类的算法运算一下,如果相等,写到文件里

1. 一块的意思就是你对比内容的最小单元,看你的数据应该就是这样的
Contig3612
TTTAATGCTGGAATTTTTGTTGATAAAATGCGATGAATGCAAAAAAAAAA
AAAAAGTA
应该是这样的一块数据
2. 文档1生成的结构如果不考虑顺序,可以用字典替代,PHP用isset,python用DICT.get再替代
3. 生成的格式最好选用小的文件来生成,比较节约内存
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表