免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Treywea
打印 上一主题 下一主题

[文本处理] awk 处理两个文件比较复杂的比较不知道可不可以做到 [复制链接]

论坛徽章:
2
白羊座
日期:2014-06-17 11:04:28午马
日期:2014-12-29 15:37:13
11 [报告]
发表于 2014-12-10 17:57 |只看该作者
回复 7# Treywea


其实我们要的是最后结果是如何
m是多少,all是多少
   

论坛徽章:
0
12 [报告]
发表于 2014-12-10 18:36 |只看该作者
回复 11# 银风冷月

嗯 通过以上的筛选之后得到  不用awk也可以 可是我不会写T T
   

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
13 [报告]
发表于 2014-12-10 19:06 |只看该作者
回复 12# Treywea
银风大师的意思是说,就这个例子而言你把想要的结果写出来。


   

论坛徽章:
0
14 [报告]
发表于 2014-12-10 20:15 |只看该作者
回复 13# zxy877298415


我重新写了一个例子:
a.txt
chr      pos    C  C+T
Chr1   1006    1   3
Chr1   1007    0   2
Chr1   1008    0   2
Chr1   2939    3   5
Chr1   35234   1   1
Chr1   491938  0   0
Chr2   2349    2   2
Chr2   3938    0   4

b.gff3
Chr1   exon    32        1007
Chr1   intro   320       1033939
Chr1   exon   2003       3383
Chr1   exon   32300      39283
Chr2   exin    303       3039
Chr2   exon   2529       332020

有效的pos为:Chr1的1006 1007 2039 35234 Chr2的3938

故算出的答案为m=1+0+3+1+0=5 all=3+2+5+1+4=15

论坛徽章:
9
2015亚冠之大阪钢巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26处女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37双鱼座
日期:2014-07-25 10:09:54程序设计版块每日发帖之星
日期:2015-08-24 06:20:00
15 [报告]
发表于 2014-12-10 20:37 |只看该作者
看了结果,我竟然蒙对了 好开心啊

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
16 [报告]
发表于 2014-12-10 22:44 |只看该作者
awk 'FNR==NR&&/exon/{a[$1]=a[$1]?a[$1]","$3"#"$4:$3"#"$4;next}FNR>1{split(a[$1],b,",");
for(i=1;i<=length(b);i++){split(b[i],c,"#");if(($2>=c[1])&&($2<=c[2])) {m+=$3;all+=$4;}}}END{print m,all}' b.txt a.txt


   

论坛徽章:
0
17 [报告]
发表于 2014-12-10 22:58 |只看该作者
太不好意思了,我1楼的解法把大小于关系修正过来也是对的

  1. vic@vic-VirtualBox:~/test$ cat a
  2. chr      pos    C  C+T
  3. Chr1   1006    1   3
  4. Chr1   1007    0   2
  5. Chr1   1008    0   2
  6. Chr1   2939    3   5
  7. Chr1   35234   1   1
  8. Chr1   491938  0   0
  9. Chr2   2349    2   2
  10. Chr2   3938    0   4
  11. vic@vic-VirtualBox:~/test$ cat b
  12. Chr1   exon    32        1007
  13. Chr1   intro   320       1033939
  14. Chr1   exon   2003       3383
  15. Chr1   exon   32300      39283
  16. Chr2   exin    303       3039
  17. Chr2   exon   2529       332020
  18. vic@vic-VirtualBox:~/test$ join a b|awk '$5=="exon"&&$2>=$6&&$2<=$7{m+=$3;all+=$4}END{printf "m=%d,all=%d\n",m,all}'
  19. m=5,all=15
复制代码

论坛徽章:
0
18 [报告]
发表于 2014-12-11 13:43 |只看该作者


回复 17# Looiml


    可是两个文件不能join啊 会出现join: file 2 is not in sorted order

论坛徽章:
0
19 [报告]
发表于 2014-12-11 13:50 |只看该作者
回复 18# Treywea
加个参数呢?
  1. join --nocheck-order a b|awk '$5=="exon"&&$2>=$6&&$2<=$7{m+=$3;all+=$4}END{printf "m=%d,all=%d\n",m,all}'
复制代码

论坛徽章:
0
20 [报告]
发表于 2014-12-11 14:03 |只看该作者
回复 15# Buring__


    我用你的计算我一整个文件时有问题的额 我也不知道问题在哪里额
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP