忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1958 | 回复: 54

【新手】怎么用perl写一个脚本比较两个基因文件里相同的语段再输出到新的文件里 [复制链接]

论坛徽章:
0
发表于 2017-02-22 21:11 |显示全部楼层
就是我有两个序列的,在linux服务器上
我需要比较两个文件,导出相同的部分基因

A里面的内容是这样的
Cotton_A_32900_BGI-A2_v1.0        AD2_NBI.cds:Gbscaffold8330.2.0        99.551        445        2        0        1        445        652        1096
一行一行的有许多行

与之对应B文件就应该是
AD2_NBI.cds:Gbscaffold8330.2.0    Cotton_A_32900_BGI-A2_v1.0        99.551        445        2        0        1        445        652        1096
也应该是许多行

我想的是首先先把A文件第一竖行与第二竖行互换,然后再用哈希将比如全部的“Cotton_A_32900_BGI-A2_v1.0        AD2_NBI.cds:Gbscaffold8330.2.0”弄到哈希里
与第二个文件比对,有一样的就输出到C文件中。。
但是自己写的程序就是有Bug

不知道有没有大佬能够提一下详细的写法。。
拜托啦啦啦OwO
打赏鼓励一下!

论坛徽章:
26
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之青岛
日期:2016-11-26 17:00:4615-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:54
发表于 2017-02-22 21:19 |显示全部楼层

  1. awk 'NR==FNR{a[$2$1]=1;next}a[$1$2]' A B > C
复制代码

论坛徽章:
0
发表于 2017-02-22 21:29 |显示全部楼层
回复 2# moperyblue

这个是什么指令。。是linux里的么

论坛徽章:
26
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之青岛
日期:2016-11-26 17:00:4615-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:54
发表于 2017-02-22 21:37 |显示全部楼层
回复 3# 酸奶盒


awk
一般linux都有 你试试看

论坛徽章:
0
发表于 2017-02-22 21:48 |显示全部楼层
回复 4# moperyblue

好的谢谢,我看看

论坛徽章:
299
程序设计版块每周发帖之星
日期: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
发表于 2017-02-22 22:18 |显示全部楼层
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my %hData = ();
  5. while (<DATA>){
  6.         last if (/\A\s*\z/);
  7.         my @aT = split;
  8.         $hData{"@aT[0,1]"} = 1;
  9. }

  10. while (<DATA>){
  11.         my @aT = split;
  12.         print if ($hData{"@aT[0,1]"} or $hData{"@aT[1,0]"});
  13. }

  14. __DATA__
  15. Cotton_A_32900_BGI-A2_v1.0        AD2_NBI.cds:Gbscaffold8330.2.0        99.551        445        2        0        1        445        652        1096

  16. AD2_NBI.cds:Gbscaffold8330.2.0    Cotton_A_32900_BGI-A2_v1.0        99.551        445        2        0        1        445        652        1096
复制代码

论坛徽章:
0
发表于 2017-02-23 14:15 |显示全部楼层
回复 2# moperyblue


我试了很久输出不出来。。请再帮我看一下QAQ

论坛徽章:
0
发表于 2017-02-23 14:36 |显示全部楼层
回复 6# sunzhiguolu

不太懂这一段 print if ($hData{"@aT[0,1]"} or $hData{"@aT[1,0]"});

是怎么把结果输出的
还有用结尾DATA的形式是要把两个文件全部原始数据都弄到一个文件里么

论坛徽章:
0
发表于 2017-02-23 14:36 |显示全部楼层
回复 6# sunzhiguolu

不太懂这一段 print if ($hData{"@aT[0,1]"} or $hData{"@aT[1,0]"});

是怎么把结果输出的
还有用结尾DATA的形式是要把两个文件全部原始数据都弄到一个文件里么

论坛徽章:
26
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之青岛
日期:2016-11-26 17:00:4615-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:54
发表于 2017-02-23 14:41 |显示全部楼层
回复 7# 酸奶盒

more A B
  1. ::::::::::::::
  2. A
  3. ::::::::::::::
  4. Cotton_A_32900_BGI-A2_v1.0        AD2_NBI.cds:Gbscaffold8330.2.0        99.551        445        2        0        1        445        652        1096
  5. ::::::::::::::
  6. B
  7. ::::::::::::::
  8. a
  9. AD2_NBI.cds:Gbscaffold8330.2.0    Cotton_A_32900_BGI-A2_v1.0        99.551        445        2        0        1        445        652        1096
  10. b
复制代码

awk 'NR==FNR{a[$2$1]=1;next}a[$1$2]' A B
  1. AD2_NBI.cds:Gbscaffold8330.2.0    Cotton_A_32900_BGI-A2_v1.0        99.551        445        2        0        1        445        652        1096
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

【有奖调查】AI时代如何迎接未知挑战?

人工智能一直在医疗行业扮演着重要角色,最早的专家系统和后来的基因诊断都是人工智能技术在医疗的行业探索。近年来,随着深度学习等技术的进步,人工智能在医疗行业的应用领域不断扩展,医学影像智能诊断、语音电子病历、癌症智能诊断等均已逐渐成为热门发展方向。
而作为人工智能重要推动力的深度学习技术的快速发展却亟需认知系统的强力支撑。
----------------------------------------
活动时间:2017年5月15日-6月5日

调查入口>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP