免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求上下区间的距离 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-03-30 20:46 |只看该作者 |倒序浏览
本人有一个区间文件,部分内容如下:
  1. Scaffold1        Gene001        1        1599
  2. Scaffold1        tRNA001        1610        1675
  3. Scaffold1        Gene002        1694        2356
  4. Scaffold1        tRNA002        2364        2434
  5. Scaffold1        tRNA003        2435        2502
  6. Scaffold1        Gene003        2503        2658
  7. Scaffold1        Gene004        2658        3329
  8. Scaffold1        Gene005        3342        4130
  9. Scaffold1        tRNA004        4156        4222
  10. Scaffold1        Gene006        4220        4576
  11. Scaffold1        tRNA005        4575        4641
  12. Scaffold1        tRNA006        4642        4704
  13. Scaffold1        tRNA007        4709        4775
  14. Scaffold1        tRNA008        4776        4845
  15. Scaffold1        tRNA009        4885        4950
  16. Scaffold1        tRNA010        4947        5014
  17. Scaffold1        Gene007        4995        6734
  18. Scaffold1        tRNA011        6759        6825
  19. Scaffold1        Gene008        6828        8189
  20. Scaffold1        Gene009        8454        8738
  21. Scaffold1        tRNA012        8754        8823
  22. Scaffold1        tRNA013        8824        8890
  23. Scaffold1        Gene010        8896        9423
复制代码

$1是序列名,$2是区间名,$3、$4是区间的起始和终止,已经根据 $3 排序。

想求上下区间间隔多少位数,若区间间隔>=0,用实际的间隔位数表示;若上下区间有重叠,求重叠的位数,用负数表示。如 tRNA004 与 Gene006 重叠2位,间隔数位 -2。
区间间隔位数作为 $5 输出(表示与下一个区间的间隔长度)。

用awk比较上下行是我最薄弱的环节,希望获得大家的帮忙 ……





论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2017-03-31 00:39 |只看该作者
回复 1# iamline

$ awk '{$5=e?$3-e:"";e=$4}1' FILE
Scaffold1 Gene001 1 1599
Scaffold1 tRNA001 1610 1675 11
Scaffold1 Gene002 1694 2356 19
Scaffold1 tRNA002 2364 2434 8
Scaffold1 tRNA003 2435 2502 1
Scaffold1 Gene003 2503 2658 1
Scaffold1 Gene004 2658 3329 0
Scaffold1 Gene005 3342 4130 13
Scaffold1 tRNA004 4156 4222 26
Scaffold1 Gene006 4220 4576 -2
Scaffold1 tRNA005 4575 4641 -1
Scaffold1 tRNA006 4642 4704 1
Scaffold1 tRNA007 4709 4775 5
Scaffold1 tRNA008 4776 4845 1
Scaffold1 tRNA009 4885 4950 40
Scaffold1 tRNA010 4947 5014 -3
Scaffold1 Gene007 4995 6734 -19
Scaffold1 tRNA011 6759 6825 25
Scaffold1 Gene008 6828 8189 3
Scaffold1 Gene009 8454 8738 265
Scaffold1 tRNA012 8754 8823 16
Scaffold1 tRNA013 8824 8890 1
Scaffold1 Gene010 8896 9423 6

论坛徽章:
0
3 [报告]
发表于 2017-03-31 10:24 |只看该作者
jason680 发表于 2017-03-31 00:39
回复 1# iamline

$ awk '{$5=e?$3-e:"";e=$4}1' FILE

非常感谢…… 这确实是简单易行的好办法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP